summaryrefslogtreecommitdiffstats
path: root/ansible_collections/cisco/ios
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/cisco/ios')
-rw-r--r--ansible_collections/cisco/ios/.ansible-lint5
-rw-r--r--ansible_collections/cisco/ios/.github/CODEOWNERS1
-rw-r--r--ansible_collections/cisco/ios/.github/workflows/ack.yml2
-rw-r--r--ansible_collections/cisco/ios/.github/workflows/codecoverage.yml2
-rw-r--r--ansible_collections/cisco/ios/.github/workflows/lint.yml13
-rw-r--r--ansible_collections/cisco/ios/.github/workflows/push.yml23
-rw-r--r--ansible_collections/cisco/ios/.github/workflows/release.yml2
-rw-r--r--ansible_collections/cisco/ios/.github/workflows/tests.yml13
-rw-r--r--ansible_collections/cisco/ios/.github/workflows/token_refresh.yml14
-rw-r--r--ansible_collections/cisco/ios/.pre-commit-config.yaml8
-rw-r--r--ansible_collections/cisco/ios/CHANGELOG.rst128
-rw-r--r--ansible_collections/cisco/ios/FILES.json6218
-rw-r--r--ansible_collections/cisco/ios/MANIFEST.json4
-rw-r--r--ansible_collections/cisco/ios/README.md4
-rw-r--r--ansible_collections/cisco/ios/bindep.txt2
-rw-r--r--ansible_collections/cisco/ios/changelogs/changelog.yaml149
-rw-r--r--ansible_collections/cisco/ios/codecov.yml7
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_acl_interfaces_module.rst2
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_acls_module.rst2088
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_banner_module.rst2
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_address_family_module.rst87
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_global_module.rst5
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_command_module.rst2
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_evpn_evi_module.rst791
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_evpn_global_module.rst721
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_facts_module.rst15
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_hostname_module.rst2
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_module.rst2
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_lag_interfaces_module.rst4
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_linkagg_module.rst2
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_global_module.rst4
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_global_module.rst2
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_module.rst401
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_ntp_global_module.rst2
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_ospf_interfaces_module.rst671
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst1030
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst827
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_ping_module.rst15
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_prefix_lists_module.rst162
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_service_module.rst8
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_snmp_server_module.rst4090
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_vlans_module.rst440
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_vrf_module.rst16
-rw-r--r--ansible_collections/cisco/ios/docs/cisco.ios.ios_vxlan_vtep_module.rst701
-rw-r--r--ansible_collections/cisco/ios/meta/runtime.yml29
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_address_family/bgp_address_family.py18
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py1
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_evi/__init__.py0
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_evi/evpn_evi.py91
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_global/__init__.py0
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_global/evpn_global.py93
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/lacp.py10
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py10
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ping/ping.py1
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/service/service.py1
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/snmp_server/snmp_server.py440
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/vlans.py8
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vxlan_vtep/__init__.py0
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vxlan_vtep/vxlan_vtep.py102
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/acls.py105
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_address_family/bgp_address_family.py10
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/bgp_global.py2
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_evi/__init__.py0
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_evi/evpn_evi.py103
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_global/__init__.py0
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_global/evpn_global.py98
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/lacp.py4
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/lldp_global.py8
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/logging_global/logging_global.py2
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/ospfv2.py278
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ping/ping.py2
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/prefix_lists/prefix_lists.py216
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/service/service.py6
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/snmp_server/snmp_server.py179
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/static_routes.py4
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py194
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vxlan_vtep/__init__.py0
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vxlan_vtep/vxlan_vtep.py190
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/acls.py90
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py11
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_evi/__init__.py0
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_evi/evpn_evi.py67
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_global/__init__.py0
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_global/evpn_global.py68
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py12
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/base.py48
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/logging_global/logging_global.py8
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py63
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/prefix_lists/prefix_lists.py55
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/snmp_server/snmp_server.py37
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py223
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vxlan_vtep/__init__.py0
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vxlan_vtep/vxlan_vtep.py67
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/acls.py158
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_address_family.py28
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_global.py363
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/evpn_evi.py121
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/evpn_global.py115
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv2.py1541
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv3.py16
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ping.py1
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/prefix_lists.py84
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/route_maps.py33
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/snmp_server.py1736
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/static_routes.py4
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/vxlan_vtep.py131
-rw-r--r--ansible_collections/cisco/ios/plugins/module_utils/network/ios/utils/utils.py17
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_acl_interfaces.py2
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_acls.py2102
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_banner.py2
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_bgp_address_family.py22
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_bgp_global.py6
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_command.py3
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_config.py7
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_evpn_evi.py540
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_evpn_global.py429
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_facts.py4
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_hostname.py2
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_l3_interfaces.py1
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_lacp.py3
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_lacp_interfaces.py1
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_lag_interfaces.py4
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_linkagg.py3
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_lldp_global.py6
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_logging.py498
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_logging_global.py2
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_ntp.py3
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_ntp_global.py2
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_ospf_interfaces.py671
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_ospfv2.py1008
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_ospfv3.py798
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_ping.py4
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_prefix_lists.py165
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_service.py9
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_snmp_server.py684
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_static_routes.py1
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_vlans.py387
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_vrf.py159
-rw-r--r--ansible_collections/cisco/ios/plugins/modules/ios_vxlan_vtep.py404
-rw-r--r--ansible_collections/cisco/ios/plugins/terminal/ios.py6
-rw-r--r--ansible_collections/cisco/ios/requirements.txt3
-rw-r--r--ansible_collections/cisco/ios/test-requirements.txt13
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/_parsed.cfg63
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_acls/vars/main.yaml231
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/_populate_config.yaml7
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/merged.yaml16
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/vars/main.yaml23
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/error_regex.yaml5
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/acl_config.j24
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/replace_config.yaml28
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/defaults/main.yaml3
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/meta/main.yaml2
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tasks/cli.yaml (renamed from ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tasks/cli.yaml)7
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tasks/main.yaml5
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_parsed.cfg9
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_populate_config.yaml13
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_remove_config.yaml15
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/deleted.yaml32
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/empty_config.yaml58
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/gathered.yaml22
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/merged.yaml56
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/overridden.yaml50
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/parsed.yaml19
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/rendered.yaml23
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/replaced.yaml46
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/vars/main.yaml183
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/defaults/main.yaml3
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/meta/main.yaml2
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tasks/cli.yaml21
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tasks/main.yaml5
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_parsed.cfg5
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_populate_config.yaml19
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_remove_config.yaml5
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/deleted.yaml38
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/empty_config.yaml25
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/gathered.yaml22
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/merged.yaml50
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/parsed.yaml19
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/rendered.yaml20
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/replaced.yaml45
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/vars/main.yaml85
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tests/cli/all_facts.yaml5
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_logging/defaults/main.yaml2
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_logging/meta/main.yaml3
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tasks/main.yaml3
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tests/cli/basic.yaml134
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_logging_global/tests/cli/deleted.yaml2
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_initial_vrf_setup.yaml11
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_parsed.cfg3
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/merged.yaml2
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/overridden.yaml8
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/replaced.yaml8
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/rtt.yaml11
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/vars/main.yaml119
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_ping/tests/cli/ping.yaml6
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/overridden.yaml22
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/replaced.yaml1
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/vars/main.yaml22
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_user/tests/cli/auth.yaml11
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_parsed_vlan_config.cfg12
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_populate_config_vlan_config.yaml17
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_remove_config_vlan_config.yaml12
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/deleted_vlan_config.yaml39
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/gathered_vlan_config.yaml23
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/merged_vlan_config.yaml46
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/overridden_vlan_config.yaml48
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/parsed_vlan_config.yaml17
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/rendered_vlan_config.yaml28
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/vars/main.yaml136
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/defaults/main.yaml3
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/meta/main.yaml2
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tasks/cli.yaml21
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tasks/main.yaml5
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_parsed.cfg7
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_config.yaml34
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_vlan_vrf_config.yaml61
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_remove_config.yaml6
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/deleted.yaml33
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/empty_config.yaml58
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/gathered.yaml23
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/merged.yaml67
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/overridden.yaml59
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/parsed.yaml19
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/rendered.yaml34
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/replaced.yaml56
-rw-r--r--ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/vars/main.yaml274
-rw-r--r--ansible_collections/cisco/ios/tests/sanity/ignore-2.10.txt3
-rw-r--r--ansible_collections/cisco/ios/tests/sanity/ignore-2.11.txt3
-rw-r--r--ansible_collections/cisco/ios/tests/sanity/ignore-2.17.txt1
-rw-r--r--ansible_collections/cisco/ios/tests/sanity/ignore-2.9.txt5
-rw-r--r--ansible_collections/cisco/ios/tests/unit/mock/loader.py2
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_dir48
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_processes_cpu4
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acl_interfaces.py31
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acls.py541
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_address_family.py39
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_global.py82
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_config.py9
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_evpn_evi.py418
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_evpn_global.py185
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_facts.py24
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_hostname.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_interfaces.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l2_interfaces.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l3_interfaces.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp.py16
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp_interfaces.py1
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lag_interfaces.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lldp_global.py19
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging.py153
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging_global.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ntp_global.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospf_interfaces.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv2.py524
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv3.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ping.py3
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_prefix_lists.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_route_maps.py25
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_service.py124
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_snmp_server.py344
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_static_routes.py27
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_user.py2
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vlans.py235
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vrf.py69
-rw-r--r--ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vxlan_vtep.py443
-rw-r--r--ansible_collections/cisco/ios/tests/unit/plugins/cliconf/test_ios.py60
266 files changed, 30582 insertions, 9848 deletions
diff --git a/ansible_collections/cisco/ios/.ansible-lint b/ansible_collections/cisco/ios/.ansible-lint
new file mode 100644
index 000000000..8d9bb70b8
--- /dev/null
+++ b/ansible_collections/cisco/ios/.ansible-lint
@@ -0,0 +1,5 @@
+---
+profile: production
+
+exclude_paths:
+ - changelogs/changelog.yaml
diff --git a/ansible_collections/cisco/ios/.github/CODEOWNERS b/ansible_collections/cisco/ios/.github/CODEOWNERS
index 8743cc6c9..e69de29bb 100644
--- a/ansible_collections/cisco/ios/.github/CODEOWNERS
+++ b/ansible_collections/cisco/ios/.github/CODEOWNERS
@@ -1 +0,0 @@
-* @KB-perByte @cidrblock
diff --git a/ansible_collections/cisco/ios/.github/workflows/ack.yml b/ansible_collections/cisco/ios/.github/workflows/ack.yml
index 0f8882731..fda595dc5 100644
--- a/ansible_collections/cisco/ios/.github/workflows/ack.yml
+++ b/ansible_collections/cisco/ios/.github/workflows/ack.yml
@@ -6,7 +6,7 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
-on:
+on: # yamllint disable-line rule:truthy
pull_request_target:
types: [opened, labeled, unlabeled, synchronize]
diff --git a/ansible_collections/cisco/ios/.github/workflows/codecoverage.yml b/ansible_collections/cisco/ios/.github/workflows/codecoverage.yml
index cd0f1ad4f..c2a7ad60d 100644
--- a/ansible_collections/cisco/ios/.github/workflows/codecoverage.yml
+++ b/ansible_collections/cisco/ios/.github/workflows/codecoverage.yml
@@ -1,7 +1,7 @@
---
name: code_coverage
-on:
+on: # yamllint disable-line rule:truthy
push:
pull_request:
branches: [ main ]
diff --git a/ansible_collections/cisco/ios/.github/workflows/lint.yml b/ansible_collections/cisco/ios/.github/workflows/lint.yml
new file mode 100644
index 000000000..fbac38cbf
--- /dev/null
+++ b/ansible_collections/cisco/ios/.github/workflows/lint.yml
@@ -0,0 +1,13 @@
+---
+name: ansible-lint
+on: # yamllint disable-line rule:truthy
+ pull_request:
+ branches: ["main"]
+jobs:
+ build:
+ name: Ansible Lint
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Run ansible-lint
+ uses: ansible/ansible-lint@main
diff --git a/ansible_collections/cisco/ios/.github/workflows/push.yml b/ansible_collections/cisco/ios/.github/workflows/push.yml
index d803db021..2e144f623 100644
--- a/ansible_collections/cisco/ios/.github/workflows/push.yml
+++ b/ansible_collections/cisco/ios/.github/workflows/push.yml
@@ -10,17 +10,18 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
-on:
- push:
- # branches to consider in the event; optional, defaults to all
- branches:
- - main
- - 'releases/**'
- - 'stable/**'
- # Prevent a 2nd run after the changelog is updated
- paths-ignore:
- - CHANGELOG.rst
- - changelogs/changelog.yaml
+on: # yamllint disable-line rule:truthy
+ # # auto generate changelog and add PR by ansibuddy
+ # push:
+ # # branches to consider in the event; optional, defaults to all
+ # branches:
+ # - main
+ # - 'releases/**'
+ # - 'stable/**'
+ # # Prevent a 2nd run after the changelog is updated
+ # paths-ignore:
+ # - CHANGELOG.rst
+ # - changelogs/changelog.yaml
workflow_dispatch:
env:
diff --git a/ansible_collections/cisco/ios/.github/workflows/release.yml b/ansible_collections/cisco/ios/.github/workflows/release.yml
index c9dd3f870..eb04259d1 100644
--- a/ansible_collections/cisco/ios/.github/workflows/release.yml
+++ b/ansible_collections/cisco/ios/.github/workflows/release.yml
@@ -1,6 +1,6 @@
---
name: release
-on:
+on: # yamllint disable-line rule:truthy
release:
types: [published]
diff --git a/ansible_collections/cisco/ios/.github/workflows/tests.yml b/ansible_collections/cisco/ios/.github/workflows/tests.yml
index 18ca370cd..2c1d85055 100644
--- a/ansible_collections/cisco/ios/.github/workflows/tests.yml
+++ b/ansible_collections/cisco/ios/.github/workflows/tests.yml
@@ -1,5 +1,5 @@
---
-name: test_collection
+name: CI
concurrency:
group: ${{ github.head_ref || github.run_id }}
@@ -14,8 +14,6 @@ on: # yamllint disable-line rule:truthy
jobs:
- ansible-lint:
- uses: ansible-network/github_actions/.github/workflows/ansible-lint.yml@main
changelog:
uses: ansible-network/github_actions/.github/workflows/changelog.yml@main
if: github.event_name != 'schedule'
@@ -30,9 +28,8 @@ jobs:
git+https://github.com/ansible-collections/ansible.utils.git
git+https://github.com/ansible-collections/ansible.netcommon.git
all_green:
- if: ${{ always() && (github.event_name != 'schedule') }}
+ if: ${{ always() }}
needs:
- - ansible-lint
- changelog
- sanity
- unit-galaxy
@@ -40,10 +37,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- run: >-
- python -c "assert set([
- '${{ needs.ansible-lint.result }}',
+ python -c "assert 'failure' not in
+ set([
'${{ needs.changelog.result }}',
'${{ needs.sanity.result }}',
'${{ needs.unit-galaxy.result }}',
'${{ needs.unit-source.result }}'
- ]) == {'success'}"
+ ])"
diff --git a/ansible_collections/cisco/ios/.github/workflows/token_refresh.yml b/ansible_collections/cisco/ios/.github/workflows/token_refresh.yml
deleted file mode 100644
index d1783963a..000000000
--- a/ansible_collections/cisco/ios/.github/workflows/token_refresh.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-name: refresh_automation_hub_token
-on:
- schedule:
- - cron: '0 0 * * *'
- workflow_dispatch:
-
-jobs:
- refresh:
- uses: ansible/devtools/.github/workflows/ah_token_refresh.yml@main
- with:
- environment: release
- secrets:
- ah_token: ${{ secrets.AH_TOKEN }}
diff --git a/ansible_collections/cisco/ios/.pre-commit-config.yaml b/ansible_collections/cisco/ios/.pre-commit-config.yaml
index f9066c285..275086d8d 100644
--- a/ansible_collections/cisco/ios/.pre-commit-config.yaml
+++ b/ansible_collections/cisco/ios/.pre-commit-config.yaml
@@ -7,7 +7,7 @@ repos:
- id: update-docs
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.4.0
+ rev: v4.5.0
hooks:
- id: check-merge-conflict
- id: check-symlinks
@@ -18,12 +18,12 @@ repos:
- id: trailing-whitespace
- repo: https://github.com/asottile/add-trailing-comma
- rev: v2.5.1
+ rev: v3.1.0
hooks:
- id: add-trailing-comma
- repo: https://github.com/pre-commit/mirrors-prettier
- rev: "v3.0.0-alpha.9-for-vscode"
+ rev: "v3.1.0"
hooks:
- id: prettier
entry: env CI=1 bash -c "prettier --list-different . || ec=$? && prettier --loglevel=error --write . && exit $ec"
@@ -41,6 +41,6 @@ repos:
args: ["--filter-files"]
- repo: https://github.com/psf/black
- rev: 23.3.0
+ rev: 23.11.0
hooks:
- id: black
diff --git a/ansible_collections/cisco/ios/CHANGELOG.rst b/ansible_collections/cisco/ios/CHANGELOG.rst
index e489054c9..1dcb5aa02 100644
--- a/ansible_collections/cisco/ios/CHANGELOG.rst
+++ b/ansible_collections/cisco/ios/CHANGELOG.rst
@@ -5,6 +5,134 @@ Cisco Ios Collection Release Notes
.. contents:: Topics
+v5.3.0
+======
+
+Minor Changes
+-------------
+
+- Added ios_evpn_evi resource module.
+- Added ios_evpn_global resource module.
+- Added ios_vxlan_vtep resource module.
+- Fixed ios_evpn_evi resource module integration test failure - code to remove VLAN config.
+- ios_bgp_address_family - Fixed an issue with inherit peer-policy CLI
+- ios_bgp_address_family - added 'advertise' key
+- ios_vlans - added vlan config CLI feature.
+- ios_vrf - added MDT related keys
+
+Bugfixes
+--------
+
+- Updated the ios_ping ping module to support size param.
+- ios_acls - make sequence optional for rendering of standard acls.
+- ios_bgp_global - Explicitly add neighbor address to every parser.
+- ios_bgp_global - remote_as not mendatory for neighbors.
+- ios_vrf - added MDT related keys
+
+New Modules
+-----------
+
+- ios_evpn_evi - Resource module to configure L2VPN EVPN EVI.
+- ios_evpn_global - Resource module to configure L2VPN EVPN.
+- ios_vxlan_vtep - Resource module to configure VXLAN VTEP interface.
+
+v5.2.0
+======
+
+Minor Changes
+-------------
+
+- ios_acls - make remarks ordered and to be applied per ace basis.
+- ios_acls - remarks in replaced and overridden state to be negated once per ace.
+- ios_config - Relax restrictions on I(src) parameter so it can be used more like I(lines).
+- ios_snmp_server - Fix an issue with cbgp2 to take in count correctly the bgp traps
+- ios_snmp_server - Update the module to manage correctly a lot of traps not take in count
+
+Deprecated Features
+-------------------
+
+- ios_snmp_server - deprecate traps.envmon.fan with traps.envmon.fan_enable
+- ios_snmp_server - deprecate traps.mpls_vpn with traps.mpls
+
+Bugfixes
+--------
+
+- Fix invalid password length not being recognized by the error parser.
+
+v5.1.0
+======
+
+Minor Changes
+-------------
+
+- Fixe an issue with some files that doesn't pass the PEP8 sanity check because `type(<obj>) == <type>` is not allowed. We need to use `isinstance(<obj>,<type>)` function in place
+- ios_snmp_user - update the user part to compare correctly the auth and privacy parts.
+- ospfv2 - added more tests to improve coverage for the rm_template
+- ospfv2 - aliased passive_interface to passive_interfaces that supports a list of interfaces
+- ospfv2 - fix area ranges rendering
+- ospfv2 - fix passive interfaces rendering
+- ospfv2 - optimized all the regex to perform better
+- ospfv2 - optimized the config side code for quicker comparison and execution
+
+Deprecated Features
+-------------------
+
+- ospfv2 - removed passive_interface to passive_interfaces that supports a list of interfaces
+
+Bugfixes
+--------
+
+- The regex looking for errors in the terminal output was matching anything with '\S+ Error:'. Caused issues with 'show runnning-config' if this string appeared in the output. Updated the regex to require the % anchor.
+- bgp_address_family - fix deleted string with int concat issue in bgp_address_family.
+- ios_acls - Fix protocol_options rendering corrects processing of overridden/ replaced state.
+- ios_acls - Fix standard acls rendering.
+- ios_bgp_address_family - fix rendering of remote_as configuration with period.
+- ios_logging_global - fix configuration order to configure discriminator before buffer.
+- ios_prefix_lists - fix deleted state to remove exisiting prefix lists from configuration.
+- ios_service - Put condition to add `private_config_encryption` in default services
+
+Documentation Changes
+---------------------
+
+- Fix prefix_lists docs.
+- Update examples for ospf_interfaces
+- Update examples for ospfv2
+- Update examples for ospfv3
+- ios_acls - update examples and use YAML output in them for better readibility.
+- ios_command - Fix formatting of examples.
+
+v5.0.0
+======
+
+Major Changes
+-------------
+
+- This release removes a previously deprecated modules, and a few attributes from this collection. Refer to **Removed Features** section for details.
+
+Minor Changes
+-------------
+
+- ios_facts - Add CPU utilization. (https://github.com/ansible-collections/cisco.ios/issues/779)
+
+Removed Features (previously deprecated)
+----------------------------------------
+
+- Deprecated ios_logging module in favor of ios_logging_global.
+- Deprecated next_hop_self attribute for bgp_address_family with nexthop_self.
+
+Bugfixes
+--------
+
+- ios_facts - Fix facts gathering when memory statistics head is not hexadecimal. (https://github.com/ansible-collections/cisco.ios/issues/776)
+- ios_snmp_server - Fixes error handling for snmp user when snmp agent is not enabled
+- ios_static_routes - Fix non vlan entries to have unique group identifier.
+- ios_static_routes - Fix parsers to parse interface attribute correctly.
+
+Documentation Changes
+---------------------
+
+- ios_facts - Add ansible_net_cpu_utilization.
+
v4.6.1
======
diff --git a/ansible_collections/cisco/ios/FILES.json b/ansible_collections/cisco/ios/FILES.json
index e6553662a..93015a7cb 100644
--- a/ansible_collections/cisco/ios/FILES.json
+++ b/ansible_collections/cisco/ios/FILES.json
@@ -8,38 +8,31 @@
"format": 1
},
{
- "name": "changelogs",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
- "format": 1
- },
- {
- "name": "changelogs/changelog.yaml",
+ "name": "codecov.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "70ca4219475dc2af825c5a23cf27d5023c6af7e86aa87c685423a77a45781732",
+ "chksum_sha256": "4aa7e485dd4db6f8a55b046088c745def2b3145d9499ccda4e9a3336467dcea2",
"format": 1
},
{
- "name": "changelogs/fragments",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "LICENSE",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986",
"format": 1
},
{
- "name": "changelogs/fragments/.keep",
+ "name": ".yamllint",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "827ef9e031ecdcaf137be239d33ef93fcbbc3611cbb6b30b0e507d0e03373d0e",
"format": 1
},
{
- "name": "changelogs/config.yaml",
+ "name": "requirements.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1bb849048d65cc2f9361aa278e580f629a47e0aca570fdb0f34cf4ef55dd332c",
+ "chksum_sha256": "47d9fe78273fd64c750e78a317b1a59a6f87ebb93d8d4cf9ae6d98a0f2fc9f9e",
"format": 1
},
{
@@ -53,7 +46,7 @@
"name": "meta/runtime.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "808d42059e25233d4a467721c8a1e5a809955bd5d4bffefb5a8c4a5bcee4e9be",
+ "chksum_sha256": "12277ae9f6f950b1b0bcbef81136879cabb0ecde5c7f464592000d7e964bd0ca",
"format": 1
},
{
@@ -64,10 +57,31 @@
"format": 1
},
{
- "name": "codecov.yml",
+ "name": "mypy.ini",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "5cc01a9c3e2a80b779ca004be5e4df814eebd494db650387b1bde98267a0b317",
+ "format": 1
+ },
+ {
+ "name": ".config",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": ".config/dictionary.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d7119b3a96ece7bcd2df6e851e7e19783049f280918a801344d502c6ada4e582",
+ "chksum_sha256": "b504c990735c090ba655b9acdcc12a537ebf7d2e101b308ef1edc8543d9ed804",
+ "format": 1
+ },
+ {
+ "name": "README.md",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b78d164194085339590122e47cd810abad85929a0b0934ae0baecdf5234817f5",
"format": 1
},
{
@@ -78,311 +92,332 @@
"format": 1
},
{
- "name": "plugins/action",
+ "name": "plugins/terminal",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/action/command.py",
+ "name": "plugins/terminal/ios.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "8924640c75e1b992771d6b42d29a581ca03cdb594aa0cf3071b60aee9551f848",
"format": 1
},
{
- "name": "plugins/action/logging_global.py",
+ "name": "plugins/terminal/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/action/lacp_interfaces.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "name": "plugins/inventory",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/action/user.py",
+ "name": "plugins/inventory/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/action/interfaces.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "name": "plugins/cache",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/action/ios.py",
+ "name": "plugins/cache/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/action/system.py",
+ "name": "plugins/cliconf",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/cliconf/ios.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "8c8e1266fc9979ffe143c1c97308ba48fac1a8b9a88ca2fbae116a52520dd6db",
"format": 1
},
{
- "name": "plugins/action/lldp_interfaces.py",
+ "name": "plugins/cliconf/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/action/__init__.py",
+ "name": "plugins/plugin_utils",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/plugin_utils/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/action/prefix_lists.py",
+ "name": "plugins/modules",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/ios_facts.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "972575a88e6eaf128ecf1def334d75e696c872077ea91a5414a32dafb4866143",
"format": 1
},
{
- "name": "plugins/action/linkagg.py",
+ "name": "plugins/modules/ios_evpn_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "7b39999ffe208c5d9c8486d1bbf1fb8403aeb12df591bb83f284cd4a36a8aef1",
"format": 1
},
{
- "name": "plugins/action/ospfv3.py",
+ "name": "plugins/modules/ios_linkagg.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "187e709f0befcb38f03ee1c255f87bb373f5d1cc6eedbb3aaa0b65d29d193da7",
"format": 1
},
{
- "name": "plugins/action/l2_interfaces.py",
+ "name": "plugins/modules/ios_l3_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "4638e9583cab76097431b4f3d58906b5de755dd4251f831f85ad7b686d91f973",
"format": 1
},
{
- "name": "plugins/action/vlans.py",
+ "name": "plugins/modules/ios_prefix_lists.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "a5937aafcc9ffa0ea3bb0c118aafe6f51e599038092aac782e80470c17f2be54",
"format": 1
},
{
- "name": "plugins/action/vrf.py",
+ "name": "plugins/modules/ios_bgp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "4a7ccab9fecf8b77b750367f9bb26f78d68116658d1e0df3f7a9222cc9ce2368",
"format": 1
},
{
- "name": "plugins/action/ntp_global.py",
+ "name": "plugins/modules/ios_evpn_evi.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "648b3f87f6eaa9d4c154175f4e1678ac4cce819db19e87bf3715deb1e0ae64f1",
"format": 1
},
{
- "name": "plugins/action/snmp_server.py",
+ "name": "plugins/modules/ios_lag_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "15ab6e5cb7cd7556ec0a828795d5eebc0e3a12779de558d8c95c5c519e52b47b",
"format": 1
},
{
- "name": "plugins/action/l3_interfaces.py",
+ "name": "plugins/modules/ios_lldp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "b6ed88f852a8fe1eee3d14965ba9700efcc11dfb4786169fa9f0ffff1888c54b",
"format": 1
},
{
- "name": "plugins/action/lacp.py",
+ "name": "plugins/modules/ios_command.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "d472c553267cd83de3d89409d05556068511b522139903551605098c26e81b0a",
"format": 1
},
{
- "name": "plugins/action/hostname.py",
+ "name": "plugins/modules/ios_ntp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "60f03c439ea2646c81a9d78e4fa0b5a99fcabd51e3ec9056397d3397b9b50a13",
"format": 1
},
{
- "name": "plugins/action/acl_interfaces.py",
+ "name": "plugins/modules/ios_vxlan_vtep.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "3817c3561c4521f0d75e464101d50b45872da612cc463ad1d6d99a1233b95d82",
"format": 1
},
{
- "name": "plugins/action/banner.py",
+ "name": "plugins/modules/ios_banner.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "3080e91ec01655a266e3052ce6b7d20f20a575adef570293e9b5d4c91e706010",
"format": 1
},
{
- "name": "plugins/action/logging.py",
+ "name": "plugins/modules/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/action/lldp_global.py",
+ "name": "plugins/modules/ios_acls.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "9d77e989734fcc228ba09fe0729353f598845030e5a450c6057106ece50a3ebb",
"format": 1
},
{
- "name": "plugins/action/bgp.py",
+ "name": "plugins/modules/ios_lacp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "5c38d69e1f6cbf52fdd84449b019b337962afdd3685d38e8635bd80c79fc28d9",
"format": 1
},
{
- "name": "plugins/action/acls.py",
+ "name": "plugins/modules/ios_bgp_address_family.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "9e3d38788590802b2c9007594d0b008532e9314bc44e8a8c17083c1f70c0a35e",
"format": 1
},
{
- "name": "plugins/action/route_maps.py",
+ "name": "plugins/modules/ios_lldp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "ed7f699ea8b847870a2f99e9d42ecf55bb70cd2d1f38d39b65f6b35ea7bf7739",
"format": 1
},
{
- "name": "plugins/action/bgp_global.py",
+ "name": "plugins/modules/ios_logging_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "74ba47a819e4473bdc366272680c4351f2a0cc8b95001ef437d7018011134e7c",
"format": 1
},
{
- "name": "plugins/action/service.py",
+ "name": "plugins/modules/ios_ping.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "abd66507a7d8a768518d0925de79e6b81f8fea7a23f087177932df20f5702715",
"format": 1
},
{
- "name": "plugins/action/lldp.py",
+ "name": "plugins/modules/ios_ntp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "76d59f676f660789f3ed3793b2b48672d240efe238a20f92c336515e1002b4b2",
"format": 1
},
{
- "name": "plugins/action/ntp.py",
+ "name": "plugins/modules/ios_ospfv3.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "15b349ce09d6168c98525de1a9225f510909629e737c754412168ee5e1800e1a",
"format": 1
},
{
- "name": "plugins/action/facts.py",
+ "name": "plugins/modules/ios_ospf_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "59e0db107b7b050f2d6910f14301bc17d72432526d96dee97d62d99c58502e15",
"format": 1
},
{
- "name": "plugins/action/config.py",
+ "name": "plugins/modules/ios_ospfv2.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "64ed9313605ffaaae2385dc9d4a2b41e566dc760d2e5c4a2bc5fa0aeb9357982",
"format": 1
},
{
- "name": "plugins/action/ping.py",
+ "name": "plugins/modules/ios_route_maps.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "a8944dc9ce33fd98c154ac00a97ebf73fab242a3d42a11b0fda3a5b9a5556445",
"format": 1
},
{
- "name": "plugins/action/bgp_address_family.py",
+ "name": "plugins/modules/ios_snmp_server.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "816d1f4bcf90311e4402e74d4bb76aa5fd78326535b2bd4860bce1957b091c8a",
"format": 1
},
{
- "name": "plugins/action/lag_interfaces.py",
+ "name": "plugins/modules/ios_bgp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "0db4f0011ef38cce8fe177deab111257d3012ab7e25d5cb5680a8d9b8640e2be",
"format": 1
},
{
- "name": "plugins/action/static_routes.py",
+ "name": "plugins/modules/ios_config.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "bcac658cede985e299d5e1d0079309784b1886e61bf5e789e8721975eeca0a51",
"format": 1
},
{
- "name": "plugins/action/ospfv2.py",
+ "name": "plugins/modules/ios_user.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "ec8c31c038a8a573be22c6cc7781b18f51fc3c35a9990d81f7fc51e30db66a37",
"format": 1
},
{
- "name": "plugins/action/ospf_interfaces.py",
+ "name": "plugins/modules/ios_lacp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
+ "chksum_sha256": "16c553e3997af81f7fe41232b71f9548ab567a5430356e2904573441a1254ab5",
"format": 1
},
{
- "name": "plugins/lookup",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/ios_acl_interfaces.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ba34b07e15d390595759f5bda5f78d022cf3bde78d960c3a944b29b4ac78df0b",
"format": 1
},
{
- "name": "plugins/lookup/__init__.py",
+ "name": "plugins/modules/ios_lldp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "bf57b49a9b78774f084d3bb6d1e6b3d8b69ab19c7f544e1c621dbcf75b0b740e",
"format": 1
},
{
- "name": "plugins/modules",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/ios_hostname.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "bb285380781590a0c9712994169f032e2158e1a081c39ca587cf9b708835aea8",
"format": 1
},
{
- "name": "plugins/modules/ios_l2_interfaces.py",
+ "name": "plugins/modules/ios_static_routes.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8aa17b7de5645ef7d089251107a7c479c0c33a6078c87e319a5e0612f448e05c",
+ "chksum_sha256": "005f38e5c7349ba72fe3a68bc0c55f2f88a0ea8569f72265a69eeaa8a0709a66",
"format": 1
},
{
@@ -393,5123 +428,5445 @@
"format": 1
},
{
- "name": "plugins/modules/ios_command.py",
+ "name": "plugins/modules/ios_l2_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cba0664f57e35aee6df4fc0b8ac0cad49a0783e174c58110835ea792967d67c5",
+ "chksum_sha256": "8aa17b7de5645ef7d089251107a7c479c0c33a6078c87e319a5e0612f448e05c",
"format": 1
},
{
- "name": "plugins/modules/ios_hostname.py",
+ "name": "plugins/modules/ios_vrf.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b01893095e6c8084b4dff49886759df6c719316009ce944ed3c7038f8c49e1e2",
+ "chksum_sha256": "7d61b581c7b35b4c0ae9c56c2971fe32f9af84b86a84f01a91913d15fcb733c8",
"format": 1
},
{
- "name": "plugins/modules/ios_acl_interfaces.py",
+ "name": "plugins/modules/ios_vlans.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "928865bb5cd25ced248fad308ccb21432bbe6d11ea113dc92ca204f95930377d",
+ "chksum_sha256": "2343fe7113565914f6bc257a500e7d86a936969dfa86baee79f2eb4beebaaff3",
"format": 1
},
{
- "name": "plugins/modules/ios_vlans.py",
+ "name": "plugins/modules/ios_service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "451b349959f4b3f7eac3cb28c640cc02aef2085adc8594b1e321a6ed66126681",
+ "chksum_sha256": "e4d9a134d041cf48669cbdb6cde10dd2337a8f6a577c967d0db062fecb3eec33",
"format": 1
},
{
- "name": "plugins/modules/__init__.py",
+ "name": "plugins/modules/ios_system.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "04f36c07687618fd2cff763acdb88f9b1b4f600ca554d626abddff78d16887e0",
"format": 1
},
{
- "name": "plugins/modules/ios_lldp_interfaces.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "bf57b49a9b78774f084d3bb6d1e6b3d8b69ab19c7f544e1c621dbcf75b0b740e",
+ "name": "plugins/doc_fragments",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/ios_ospf_interfaces.py",
+ "name": "plugins/doc_fragments/ios.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "29d0839ba9d70eeb0a3293794fcc57f0a4ee204be1589a205404991f2224995c",
+ "chksum_sha256": "183557f42150c3888baca407c30a651bb6d0c70a06ac55f409b271323dfcbacf",
"format": 1
},
{
- "name": "plugins/modules/ios_lldp_global.py",
+ "name": "plugins/doc_fragments/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "10b1ddbcf6cae68318af0dd004dcadb04fb15279a564adc03766d78369077080",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/modules/ios_linkagg.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "dbc62d488b07aca0614e8b51fcc4f22ecfda81e31183ab65a7f825f01fb8f57e",
+ "name": "plugins/lookup",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/ios_lacp_interfaces.py",
+ "name": "plugins/lookup/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a544d51679ceefbd877f67d11cdab290076ee28e07c3af63e4469f5242f1ea76",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/modules/ios_lldp.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "ed7f699ea8b847870a2f99e9d42ecf55bb70cd2d1f38d39b65f6b35ea7bf7739",
+ "name": "plugins/filter",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/ios_ospfv2.py",
+ "name": "plugins/filter/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "93778abbc29f679cab515d23d4b37623de3a8e4a7f6ecd2b2f2272bb62cf22c4",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/modules/ios_l3_interfaces.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "7eedef1ad040a2c72d18a05fba5c3588dce4b6292a244d2503aa449abb73d26c",
+ "name": "plugins/module_utils",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/ios_lag_interfaces.py",
+ "name": "plugins/module_utils/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4346d7d93d6129bd6b90a8fe9879103dcea31ac5615cfd0212e2e6950adeb263",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/modules/ios_snmp_server.py",
+ "name": "plugins/module_utils/network",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/module_utils/network/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d285c02847708a7c59cab3e0c82515c1b69dc35ad34a8c85f0c8a6655fe42e6a",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "format": 1
+ },
+ {
+ "name": "plugins/module_utils/network/ios",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/module_utils/network/ios/rm_templates",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/ios_logging.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/bgp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2ef3fc3010611e55a1a028f347c454358c04f82b869e9148c6729b6e6e70f992",
+ "chksum_sha256": "dca0cb13b6e26be815be0020643a86a88a7ce39cad897bdc7f369feb7ccbf614",
"format": 1
},
{
- "name": "plugins/modules/ios_logging_global.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/evpn_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "93b2d9bb34d66493d97f7cc4ecbf4904be5fb8a17a302c7627f3266c060fa631",
+ "chksum_sha256": "249fe0eba1589f0bdb2ba5510fa5e8f0b885e989121347301c41e44a108dfe2b",
"format": 1
},
{
- "name": "plugins/modules/ios_service.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/lag_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b8f54ab0e351935eaf82fcdc7feee224fb3883f61583c76e0505082466032a17",
+ "chksum_sha256": "cde795fceb364b30850bb9c04ac589c84896800e1729ebe0c9a9c3478f4722b2",
"format": 1
},
{
- "name": "plugins/modules/ios_route_maps.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a8944dc9ce33fd98c154ac00a97ebf73fab242a3d42a11b0fda3a5b9a5556445",
+ "chksum_sha256": "01ee7704f1fbcefbe1c43dcf83c782817ccd2ae09d1fe9532d667b5bfcf962d1",
"format": 1
},
{
- "name": "plugins/modules/ios_ping.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/bgp_address_family.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0c777e54f6cee8b60bced6d6391598280220a74ee37f7c7a29c4854711ee11d6",
+ "chksum_sha256": "29e1cfe2d4c8064d04f53bdae1c971f631be6f0844a3ff5df9347aab1c6c0dff",
"format": 1
},
{
- "name": "plugins/modules/ios_banner.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/static_routes.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bd4589903461478dbc67f975810b6c210188ced7553f9707abe0832569f340c1",
+ "chksum_sha256": "aee1c6a1aca4f66c407d9a805b12471d1ed27959ed486bf46b34569c7a30d79e",
"format": 1
},
{
- "name": "plugins/modules/ios_bgp_address_family.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/hostname.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ce858d2f45913dd578577247a3b51ff2f1af87590c6a6d1a1f2835c2f34180cf",
+ "chksum_sha256": "dd7353433ed688982b69d5f12378ff56bb0b399f0734e27b1571a86a14384253",
"format": 1
},
{
- "name": "plugins/modules/ios_static_routes.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/vxlan_vtep.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6dd4bf3cbc064fedfa5595591d58ff074798734e22a9fcccdc34ae2824fd7c92",
+ "chksum_sha256": "982beb248da55ccc7ecf9fa011237ce35cdb9360467e8917d4ca599913ea2255",
"format": 1
},
{
- "name": "plugins/modules/ios_prefix_lists.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/ntp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bb3dbef922f5aa422218c8a2742d1bb3542a033a39ca92f376ef78537ee826c0",
+ "chksum_sha256": "b678c59980cd60b4ab5e3cc4911f1dead04603b229b1519d74ea69b94951906b",
"format": 1
},
{
- "name": "plugins/modules/ios_ospfv3.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/snmp_server.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4813ed2a0f2e5e797bd1b0717a84c9d3f9793e18779e63e0ca776fdbdb150ce5",
+ "chksum_sha256": "4584df761d31b13f2375279763059612816a629e584c16a4572ab991df128f3b",
"format": 1
},
{
- "name": "plugins/modules/ios_vrf.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9442a2f8c680e157901f7830cc44333daf17ce4ca32836c762be706ac6f85941",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/modules/ios_bgp.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/ospfv3.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0db4f0011ef38cce8fe177deab111257d3012ab7e25d5cb5680a8d9b8640e2be",
+ "chksum_sha256": "dbd8f6a15c395b673de496acf55ac661dbf4911c6bf767b121a47240550ec2fb",
"format": 1
},
{
- "name": "plugins/modules/ios_ntp_global.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fb1b379dc26c6d5618d8c6028f16ac515338045cb9e77b3b4fff90f43d3db540",
+ "chksum_sha256": "4a3a79e6c58e4de26c7d6e759b48befd4c79c541924c27ae6aad77f267e49aac",
"format": 1
},
{
- "name": "plugins/modules/ios_lacp.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/route_maps.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c4971e89b849390f368589ea92a0959e5221714ee7df8f9bdf8b68cb6f46d6d",
+ "chksum_sha256": "b3ba655a290e50e5ace24b073656b5eb5aed5b1589c4e693ae5e38aca29ee941",
"format": 1
},
{
- "name": "plugins/modules/ios_facts.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/l2_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0d51245661b3fc56bd8c02142f00b0cbff19f6a45a5e16d8ca087003d0acd032",
+ "chksum_sha256": "38538d11bfe3e802bebb0e784aacd68b06f83229e706087a9471713311e459fd",
"format": 1
},
{
- "name": "plugins/modules/ios_user.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/acl_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec8c31c038a8a573be22c6cc7781b18f51fc3c35a9990d81f7fc51e30db66a37",
+ "chksum_sha256": "ff8d18baa44b30871ea6d13392254549e24830173ed5d8184a221d1e6a069ba4",
"format": 1
},
{
- "name": "plugins/modules/ios_system.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/ospfv2.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "04f36c07687618fd2cff763acdb88f9b1b4f600ca554d626abddff78d16887e0",
+ "chksum_sha256": "23b21c827433ed747a30839619719620c43d616420f4b39e3f9b07611b2da091",
"format": 1
},
{
- "name": "plugins/modules/ios_ntp.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/acls.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4153b4ece8f546526ec5d64df2f27473d226ca0182e16b82cd3e5eba414c2f51",
+ "chksum_sha256": "e77900337a8d62303dc9365f0974278f9111ccc1efe24a33dc491e826bdb13c2",
"format": 1
},
{
- "name": "plugins/modules/ios_config.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/l3_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8feed6442cb993bfe0aa187be7916540c42fdac7b568d686b23c15c0347f2a8a",
+ "chksum_sha256": "6ab404b96774116937c242b64b9e72fef658603adbfb92ac51c70561e8513eca",
"format": 1
},
{
- "name": "plugins/modules/ios_acls.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/ping.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "60b65fb0b4714b26703f9009290dc91e777a32ee1c4347956c50383cc7dff578",
+ "chksum_sha256": "b1f3a2280507d4b378e65de305f7c0b9512106ea50adb00615cb834366540087",
"format": 1
},
{
- "name": "plugins/modules/ios_bgp_global.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/ospf_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f06c03e068705f8447d4d3a727cfff1815e1ceaa4e352549debe84a822c3e2a1",
+ "chksum_sha256": "f6e8876d90d0af81d076a4a10aca05c03ee0502b58e6ab3dc20e89dad38dda87",
"format": 1
},
{
- "name": "plugins/cliconf",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/module_utils/network/ios/rm_templates/logging_global.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "841f75df76900bfdcae91e9d7e44bfaf394e0d75b2a8d3e38e8e0b8e62997a33",
"format": 1
},
{
- "name": "plugins/cliconf/ios.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/prefix_lists.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8c8e1266fc9979ffe143c1c97308ba48fac1a8b9a88ca2fbae116a52520dd6db",
+ "chksum_sha256": "9c88d89b37339555efa1ad535ff0850e6624177208edc9e32078df5b79ea07ce",
"format": 1
},
{
- "name": "plugins/cliconf/__init__.py",
+ "name": "plugins/module_utils/network/ios/rm_templates/evpn_evi.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "c224d0295c96f2645cd41d4fe3dff84d527e48c28a9122f0c35374045147d0c1",
"format": 1
},
{
- "name": "plugins/plugin_utils",
+ "name": "plugins/module_utils/network/ios/providers",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/plugin_utils/__init__.py",
+ "name": "plugins/module_utils/network/ios/providers/module.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "41e79a9b0ff1082f7cfd7356a0638c4c84ad9df056b5298a4a68a6afd663e573",
"format": 1
},
{
- "name": "plugins/filter",
+ "name": "plugins/module_utils/network/ios/providers/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/filter/__init__.py",
+ "name": "plugins/module_utils/network/ios/providers/cli/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/terminal",
+ "name": "plugins/module_utils/network/ios/providers/cli/config",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/terminal/ios.py",
+ "name": "plugins/module_utils/network/ios/providers/cli/config/base.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7193decdb92050a3893ca21da7e0df1db34fdd8d39fb3ed2ddf1b2764d5db5d0",
+ "chksum_sha256": "ba52ed9fa57f47249591b68367d04f0d70d86df7b651be27d578408924547687",
"format": 1
},
{
- "name": "plugins/terminal/__init__.py",
+ "name": "plugins/module_utils/network/ios/providers/cli/config/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/inventory",
+ "name": "plugins/module_utils/network/ios/providers/cli/config/bgp",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/inventory/__init__.py",
+ "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/neighbors.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
- "format": 1
- },
- {
- "name": "plugins/module_utils",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "05f60415ef9fc10d6349d9a21a2bd7ae64059cad21081ba3c1b619d5a67ecf62",
"format": 1
},
{
- "name": "plugins/module_utils/__init__.py",
+ "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",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/process.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1c67a39dd2dfe3459a294045e83843d6169452bb20964249c2516f0b55025ddb",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/address_family.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "31ecceba4cfd7b5c5e9ac4508fb23295420cf8eec49edf7ccb194002e73245fa",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/ios.py",
+ "name": "plugins/module_utils/network/ios/providers/providers.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8c8f19b937a299add5e06e503feb5671c9233948f7eac8f73059b4eed31d00d0",
+ "chksum_sha256": "282be606081a1895bce9320c131e547a2567b1f97071a21489f244bb066f547c",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/__init__.py",
+ "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/utils",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
- "format": 1
- },
- {
- "name": "plugins/module_utils/network/ios/utils/__init__.py",
+ "name": "plugins/module_utils/network/ios/ios.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "8c8f19b937a299add5e06e503feb5671c9233948f7eac8f73059b4eed31d00d0",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/utils/utils.py",
+ "name": "plugins/module_utils/network/ios/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b7f3fc45de4333a9a1e18e11c49658d076b2751d153f570bd1f7a780816ba491",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec",
+ "name": "plugins/module_utils/network/ios/facts",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lacp_interfaces",
+ "name": "plugins/module_utils/network/ios/facts/bgp_address_family",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lacp_interfaces/lacp_interfaces.py",
+ "name": "plugins/module_utils/network/ios/facts/bgp_address_family/bgp_address_family.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "66630ccb587e57b78f8b61fbf6e499f0ffdf5a886cd6afa119dbe4552b812942",
+ "chksum_sha256": "d02fd4c43363ca7df4e9e9879e4cea873334bc4ce10f86e7bd7ae0df041fa6a6",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lacp_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/bgp_address_family/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/bgp_global",
+ "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/argspec/bgp_global/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/static_routes/static_routes.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "4219bf270bcc7f6c374128d1c721ade8c3f1622da5a7377ca6115973ab0b183b",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py",
+ "name": "plugins/module_utils/network/ios/facts/static_routes/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "31181909fd09b584e362de4060b6d88fbc21f8a34571309e4d35d72c4a620bdd",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/service",
+ "name": "plugins/module_utils/network/ios/facts/prefix_lists",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/service/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/prefix_lists/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/service/service.py",
+ "name": "plugins/module_utils/network/ios/facts/prefix_lists/prefix_lists.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4c0ef42876a34d59dee93767a5e0bea46ccf7c484a1dbb911bedf02004cea755",
+ "chksum_sha256": "cb75d959c5be987f0bca13bda393af91ce11f97885fa64a22a6f1e5df4bf0bf8",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/acls",
+ "name": "plugins/module_utils/network/ios/facts/vxlan_vtep",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/acls/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/vxlan_vtep/vxlan_vtep.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "fe7e6cd2e81720a21b23cd45a7893776528e66f9a236713e8fb97239966d8c4f",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/acls/acls.py",
+ "name": "plugins/module_utils/network/ios/facts/vxlan_vtep/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "aee0703ab5ab05bc8845c32332b051ef94361f2256b01f9bb08efa7c1748256a",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lldp_interfaces",
+ "name": "plugins/module_utils/network/ios/facts/hostname",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lldp_interfaces/lldp_interfaces.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "c27fc5f34d7ac72f7e07e97409531470bb55a0e552bfd989a5d9b69f1dd9ac74",
- "format": 1
- },
- {
- "name": "plugins/module_utils/network/ios/argspec/lldp_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/hostname/hostname.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "b66f9bbe31ee1de7a4acefb0fe020180477a46c7ed4787955bf5f11a714e9b3e",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/hostname/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/route_maps",
+ "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/argspec/route_maps/__init__.py",
+ "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/argspec/route_maps/route_maps.py",
+ "name": "plugins/module_utils/network/ios/facts/lldp_interfaces/lldp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b09ae7a84c42dd487f8008271554dd8d31c9297157e844620b5cc52c5716430c",
+ "chksum_sha256": "0c0f5296b417c1eba895f8c8843cc99411f4a96fa560243ef92bf166776b3df3",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/l3_interfaces",
+ "name": "plugins/module_utils/network/ios/facts/lacp",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/l3_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/lacp/lacp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "ce8540d2638f6bb276cff4500215134ffce952a7de875f7b7121f91b75303de7",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/l3_interfaces/l3_interfaces.py",
+ "name": "plugins/module_utils/network/ios/facts/lacp/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fa202b891eca20e325fd07cfe7bb8c8b62ae8c1c0f90986fc2d11ebd60ee4116",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/prefix_lists",
+ "name": "plugins/module_utils/network/ios/facts/ospfv2",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/prefix_lists/__init__.py",
+ "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/argspec/prefix_lists/prefix_lists.py",
+ "name": "plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c45218163937496cae4e1594682a2a34b9e4933933ed5aba4c5115e34c79babb",
+ "chksum_sha256": "113b67eaa8aa54c14a3044bef9bc27b185d3ef024cb4f8c17715a2b9a9837137",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ping",
+ "name": "plugins/module_utils/network/ios/facts/logging_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ping/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/logging_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ping/ping.py",
+ "name": "plugins/module_utils/network/ios/facts/logging_global/logging_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "676af2ac136527d4000739f5167c2942feec09c628478e6827c12e0346322fca",
+ "chksum_sha256": "70ccc9337540a7335478531f5d86a6a8e7769693ca56178dc405484c4954c99a",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ntp_global",
+ "name": "plugins/module_utils/network/ios/facts/ospfv3",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ntp_global/__init__.py",
+ "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/argspec/ntp_global/ntp_global.py",
+ "name": "plugins/module_utils/network/ios/facts/ospfv3/ospfv3.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e65bbf39e241b04aa8e2258cb0aef1d1fa44a4d9b7707066d73848d2966096a4",
+ "chksum_sha256": "ada439ee84e0d1a2ab7301e2e54e82160f60e969a79a2d004ff0e834c61c1cb8",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lag_interfaces",
+ "name": "plugins/module_utils/network/ios/facts/legacy",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lag_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/legacy/base.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "10afffae4140e201461d7fa9554cc10fb1bda3c55adb88b61df1430b0369ace6",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lag_interfaces/lag_interfaces.py",
+ "name": "plugins/module_utils/network/ios/facts/legacy/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d74d58b5cf7ad1ddb524b74f220ae5af7314b646139fa2bda4d9126c185e43e0",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/snmp_server",
+ "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/argspec/snmp_server/__init__.py",
+ "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/argspec/snmp_server/snmp_server.py",
+ "name": "plugins/module_utils/network/ios/facts/l2_interfaces/l2_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3562d8b8958afcca42d5e7309a3cc2407e07ae75349d23f588298e98f160bf2c",
+ "chksum_sha256": "26ecb4ba4028670a5fdf7a70fa0b551a5a068db5730b721815659e618e1ec2de",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ospfv3",
+ "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/argspec/ospfv3/__init__.py",
+ "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/argspec/ospfv3/ospfv3.py",
+ "name": "plugins/module_utils/network/ios/facts/ospf_interfaces/ospf_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "966dc855301946bcffa53d43f3bc2a86835131c35ad14a48422f355379bc7738",
+ "chksum_sha256": "c6246168ca839894fb46959c82ac239133251c370565901795cf361d9e3c46e7",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/interfaces",
+ "name": "plugins/module_utils/network/ios/facts/route_maps",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/interfaces/interfaces.py",
+ "name": "plugins/module_utils/network/ios/facts/route_maps/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a393a0e39a619c48351e257131f34e581756ea196feaa0579e06ca2ab980e4a1",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/route_maps/route_maps.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "c7f2359e2128b9e5591db197d33fbcf002f07eb23c078dbfe9af3fc3cbc18a0f",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ospf_interfaces",
+ "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/argspec/ospf_interfaces/__init__.py",
+ "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/argspec/ospf_interfaces/ospf_interfaces.py",
+ "name": "plugins/module_utils/network/ios/facts/acl_interfaces/acl_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7c91be7d7581d9aae2657187c3e4e0233d0b86e7886d174a1803df99fafcc5be",
+ "chksum_sha256": "8e711de61f5a2efc9b7c93a3f591fbcbbe96cccdfd8bfac0e62346d281b58537",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/bgp_address_family",
+ "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/argspec/bgp_address_family/__init__.py",
+ "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/argspec/bgp_address_family/bgp_address_family.py",
+ "name": "plugins/module_utils/network/ios/facts/lldp_global/lldp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4f2a212a7011e87406739ed126f815557a052b2a1c0c2722792de03bda459f15",
+ "chksum_sha256": "392c897fb49431138840ba657137fe5b7a0bc77aec11eab9daf3ab79c7002c36",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/hostname",
+ "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/snmp_server",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/hostname/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/snmp_server/snmp_server.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "1a7f3abe73e700e987574e96c8f8d3631473cdd9254ff9dcbfa843fe99ed9742",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/hostname/hostname.py",
+ "name": "plugins/module_utils/network/ios/facts/snmp_server/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c54693851f2ac212f5f30d3ac4062ce8c11c8ec8cf464ac95620c12b685d081",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/acl_interfaces",
+ "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/argspec/acl_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/lacp_interfaces/lacp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "21e764a5334f2bf9f4f9f642677acd7c333f65fac11664bbede8e37c4bcae070",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/acl_interfaces/acl_interfaces.py",
+ "name": "plugins/module_utils/network/ios/facts/lacp_interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4bd638f26736e99f9344760db34a47fa9a0e05132a6ae6e8ee45e01f81888064",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/logging_global",
+ "name": "plugins/module_utils/network/ios/facts/evpn_evi",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/logging_global/logging_global.py",
+ "name": "plugins/module_utils/network/ios/facts/evpn_evi/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "05483c5a5defc62aae5f5f4413d7a0eeaf5949abe12673e879368fc628ff9784",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/logging_global/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/evpn_evi/evpn_evi.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "7a7116deaeadef9990039d9e3a307d8e654e82105bfba539fa5d9d2998451272",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/facts",
+ "name": "plugins/module_utils/network/ios/facts/service",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/facts/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/service/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/facts/facts.py",
+ "name": "plugins/module_utils/network/ios/facts/service/service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4d3340a5018ae4c06ca1d4fed2b7e307feaba807408f949b4d6b89ef2ff7408f",
+ "chksum_sha256": "efc3f3c00bcf17a9b56cd293e545cc6d38c096d0eebe1e72dfa00bc83bbb3846",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lacp",
+ "name": "plugins/module_utils/network/ios/facts/acls",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lacp/__init__.py",
+ "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/argspec/lacp/lacp.py",
+ "name": "plugins/module_utils/network/ios/facts/acls/acls.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "de12431c13edc4b335566f0f35d8908e8ad5b4f2a3f55577059991bb735aa3ec",
+ "chksum_sha256": "fe000519557ac7521aab1d74348c9374a90d8ddce5806e683637751d3c6b5048",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/vlans",
+ "name": "plugins/module_utils/network/ios/facts/ntp_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/vlans/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/ntp_global/ntp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "a3602217d9c8cd2e629f92117f02aab87444888bc51cc382603b8e22e065ec8f",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/vlans/vlans.py",
+ "name": "plugins/module_utils/network/ios/facts/ntp_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b3419de32cdc2dcc99552797b829f62dd4e967d860b57c232839f9ed81899c86",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ospfv2",
+ "name": "plugins/module_utils/network/ios/facts/evpn_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ospfv2/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/evpn_global/evpn_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "de85a33572fb7e2527ef6f532e219d195ac05d072f649110fc88955a838d48db",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/ospfv2/ospfv2.py",
+ "name": "plugins/module_utils/network/ios/facts/evpn_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dcedd4871d07466c1151ca66b038663800525dcd467928d46020dc3341d2b9ad",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lldp_global",
+ "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/argspec/lldp_global/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/lag_interfaces/lag_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "96b35fdb9298af93724292ddb020ef441a25cbb787af940f806a3bd7417bf1d7",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py",
+ "name": "plugins/module_utils/network/ios/facts/lag_interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5286e708060d9c0cbbdbace9d61b1b30737684b293b0805002b6f05241410aed",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/static_routes",
+ "name": "plugins/module_utils/network/ios/facts/vlans",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/static_routes/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/vlans/vlans.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "547db84d096fb43a0552766c18b1fe9464037591f9ac948497d6816ec88b2b78",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/static_routes/static_routes.py",
+ "name": "plugins/module_utils/network/ios/facts/vlans/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5b93019ca688aa2b3c9ffaed228a4d8c01258b5034d588be516deef2e37603e4",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/l2_interfaces",
+ "name": "plugins/module_utils/network/ios/facts/interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/l2_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/interfaces/interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "2c67945d2e056b94dd9d7b778d3f7dc2881ebb00192882d846db863701f612fe",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/argspec/l2_interfaces/l2_interfaces.py",
+ "name": "plugins/module_utils/network/ios/facts/interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5457f6be5b2efdc9cd5d0c33500fdcc8cd857c299441ea5cfad0325c0960c57e",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/providers",
+ "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/providers/__init__.py",
+ "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/providers/module.py",
+ "name": "plugins/module_utils/network/ios/facts/l3_interfaces/l3_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "41e79a9b0ff1082f7cfd7356a0638c4c84ad9df056b5298a4a68a6afd663e573",
+ "chksum_sha256": "6caa00263da8ce34f349a42e997a0ddd63954a3fe92e0e2499e9ad489a77f195",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/providers/cli",
+ "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/providers/cli/__init__.py",
+ "name": "plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "97e15a6d847dec5b142a7aa1e49c23c3f8d23b2cb966475ca2f4db5b998ce245",
+ "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/providers/cli/config",
+ "name": "plugins/module_utils/network/ios/facts/facts.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3583f4fe6da74bc42f7c9406a5e51c4d4aa3000183ad49b826bfd802f0c0ed52",
+ "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/providers/cli/config/bgp",
+ "name": "plugins/module_utils/network/ios/argspec/bgp_address_family",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/bgp_address_family/bgp_address_family.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "897b1f1139b38bc098a6d8cf92b47ff1d3145596f6e7b2cee75d191a96ac1283",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/address_family.py",
+ "name": "plugins/module_utils/network/ios/argspec/bgp_address_family/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "31ecceba4cfd7b5c5e9ac4508fb23295420cf8eec49edf7ccb194002e73245fa",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/process.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "1c67a39dd2dfe3459a294045e83843d6169452bb20964249c2516f0b55025ddb",
+ "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/providers/cli/config/bgp/neighbors.py",
+ "name": "plugins/module_utils/network/ios/argspec/static_routes/static_routes.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "05f60415ef9fc10d6349d9a21a2bd7ae64059cad21081ba3c1b619d5a67ecf62",
+ "chksum_sha256": "5b93019ca688aa2b3c9ffaed228a4d8c01258b5034d588be516deef2e37603e4",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/providers/cli/config/__init__.py",
+ "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/providers/cli/config/base.py",
+ "name": "plugins/module_utils/network/ios/argspec/prefix_lists",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/module_utils/network/ios/argspec/prefix_lists/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ba52ed9fa57f47249591b68367d04f0d70d86df7b651be27d578408924547687",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/providers/providers.py",
+ "name": "plugins/module_utils/network/ios/argspec/prefix_lists/prefix_lists.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "282be606081a1895bce9320c131e547a2567b1f97071a21489f244bb066f547c",
+ "chksum_sha256": "c45218163937496cae4e1594682a2a34b9e4933933ed5aba4c5115e34c79babb",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config",
+ "name": "plugins/module_utils/network/ios/argspec/vxlan_vtep",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lacp_interfaces",
+ "name": "plugins/module_utils/network/ios/argspec/vxlan_vtep/vxlan_vtep.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d173f9688ac144daa92782712e98c919fdf2bf16cbc67df8901f24d49271329f",
+ "format": 1
+ },
+ {
+ "name": "plugins/module_utils/network/ios/argspec/vxlan_vtep/__init__.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "format": 1
+ },
+ {
+ "name": "plugins/module_utils/network/ios/argspec/hostname",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lacp_interfaces/lacp_interfaces.py",
+ "name": "plugins/module_utils/network/ios/argspec/hostname/hostname.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dbc626e83c3d4ce8c8aa42ee8903738f6ac2b1e16e8cda34dba4eebfdaebc01a",
+ "chksum_sha256": "1c54693851f2ac212f5f30d3ac4062ce8c11c8ec8cf464ac95620c12b685d081",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lacp_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/hostname/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/bgp_global",
+ "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/config/bgp_global/__init__.py",
+ "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/config/bgp_global/bgp_global.py",
+ "name": "plugins/module_utils/network/ios/argspec/lldp_interfaces/lldp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ae4cd4877cbd403dd1de74542a8f8a302cbc27a3038aa617b1f3c450b5e6b4a8",
+ "chksum_sha256": "c27fc5f34d7ac72f7e07e97409531470bb55a0e552bfd989a5d9b69f1dd9ac74",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/service",
+ "name": "plugins/module_utils/network/ios/argspec/lacp",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/service/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/lacp/lacp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "89db25fde82eb1ec3f45c141805d2f47ececbd6c2af2e2550c021935065c1ed7",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/service/service.py",
+ "name": "plugins/module_utils/network/ios/argspec/lacp/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "50ec6307dc924c5428aaef68e6c225962c7e7a1c6d9e7f62d1a2f77fcbcb0e14",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/acls",
+ "name": "plugins/module_utils/network/ios/argspec/ospfv2",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/acls/__init__.py",
+ "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/config/acls/acls.py",
+ "name": "plugins/module_utils/network/ios/argspec/ospfv2/ospfv2.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "273ded232f1e7ddeb51e9c95b3ec3b55d475ce1f7a13e8b80f533f654364f439",
+ "chksum_sha256": "dcedd4871d07466c1151ca66b038663800525dcd467928d46020dc3341d2b9ad",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lldp_interfaces",
+ "name": "plugins/module_utils/network/ios/argspec/logging_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lldp_interfaces/lldp_interfaces.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "d3949fb9c8b9448e84fce989aaec57be482668c7920451aea2423d725bbe0987",
- "format": 1
- },
- {
- "name": "plugins/module_utils/network/ios/config/lldp_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/logging_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/logging_global/logging_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "05483c5a5defc62aae5f5f4413d7a0eeaf5949abe12673e879368fc628ff9784",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/route_maps",
+ "name": "plugins/module_utils/network/ios/argspec/ospfv3",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/route_maps/__init__.py",
+ "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/config/route_maps/route_maps.py",
+ "name": "plugins/module_utils/network/ios/argspec/ospfv3/ospfv3.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d1b3a698c940c2092d72f35fc6839e5f5a91bff84f34ebbcb492f7f89e3ff9b1",
+ "chksum_sha256": "966dc855301946bcffa53d43f3bc2a86835131c35ad14a48422f355379bc7738",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/l3_interfaces",
+ "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/config/l3_interfaces/__init__.py",
+ "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/config/l3_interfaces/l3_interfaces.py",
+ "name": "plugins/module_utils/network/ios/argspec/l2_interfaces/l2_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "80d5e6e948da92d2ed41df019bc761282b0d9220c25c53c7fd4e6efa7c30281a",
+ "chksum_sha256": "5457f6be5b2efdc9cd5d0c33500fdcc8cd857c299441ea5cfad0325c0960c57e",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/prefix_lists",
+ "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/config/prefix_lists/__init__.py",
+ "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/config/prefix_lists/prefix_lists.py",
+ "name": "plugins/module_utils/network/ios/argspec/ospf_interfaces/ospf_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c44d121bec3ad372e16b8cbf3ccf88107a8a69b724606fd6e4525b6def6ffef9",
+ "chksum_sha256": "7c91be7d7581d9aae2657187c3e4e0233d0b86e7886d174a1803df99fafcc5be",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ping",
+ "name": "plugins/module_utils/network/ios/argspec/route_maps",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ping/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/route_maps/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ping/ping.py",
+ "name": "plugins/module_utils/network/ios/argspec/route_maps/route_maps.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4c1d7a56a6d7dca1da11fcca42f26b1d6e404fccf6cf644d847f83028b14965a",
+ "chksum_sha256": "b09ae7a84c42dd487f8008271554dd8d31c9297157e844620b5cc52c5716430c",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ntp_global",
+ "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/config/ntp_global/__init__.py",
+ "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/config/ntp_global/ntp_global.py",
+ "name": "plugins/module_utils/network/ios/argspec/acl_interfaces/acl_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "416613ab9788cd4cbad0a410b41e28b8602c927b4240c3591d65454a839def54",
+ "chksum_sha256": "4bd638f26736e99f9344760db34a47fa9a0e05132a6ae6e8ee45e01f81888064",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lag_interfaces",
+ "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/config/lag_interfaces/__init__.py",
+ "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/config/lag_interfaces/lag_interfaces.py",
+ "name": "plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "295679089484f01af9517b998fb2e0caf5d810436bcf8e40e261a309b81b5865",
+ "chksum_sha256": "4053cf17588d3f40e96123a5a0adbd48b9aad14450a70a612b6c7244b137c189",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/snmp_server",
+ "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/snmp_server",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/snmp_server/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/snmp_server/snmp_server.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "6edeffac28f4315f61fc610de0ca688fcbbaa224fce0e5fecd8084bb1a7bf8eb",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/snmp_server/snmp_server.py",
+ "name": "plugins/module_utils/network/ios/argspec/snmp_server/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "313096ed779bf1e81cabf3fea67d9e627bd3cdf259d044f06348927e291c59aa",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ospfv3",
+ "name": "plugins/module_utils/network/ios/argspec/ping",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ospfv3/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/ping/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ospfv3/ospfv3.py",
+ "name": "plugins/module_utils/network/ios/argspec/ping/ping.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "736eb6daa9c808d54ce49fe1d90dde283856c61fbe5e6f7e13553c955ca4ad76",
+ "chksum_sha256": "f8280adf6fec29f9ded0d547a41cff6b2c822d1a53a56008e7fa890397dd569f",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/interfaces",
+ "name": "plugins/module_utils/network/ios/argspec/facts",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/interfaces/interfaces.py",
+ "name": "plugins/module_utils/network/ios/argspec/facts/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d76972dfae66d04dadb152c4f023e58aaef97df0c1ae88e33bdc3d7cf0be2b45",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/facts/facts.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "4d3340a5018ae4c06ca1d4fed2b7e307feaba807408f949b4d6b89ef2ff7408f",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ospf_interfaces",
+ "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/config/ospf_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/lacp_interfaces/lacp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "66630ccb587e57b78f8b61fbf6e499f0ffdf5a886cd6afa119dbe4552b812942",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ospf_interfaces/ospf_interfaces.py",
+ "name": "plugins/module_utils/network/ios/argspec/lacp_interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "383eeb77e1dfebff8ea69cad713d8e3f3468e91a07cc57de5ebbf4bdc1aa75d7",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/bgp_address_family",
+ "name": "plugins/module_utils/network/ios/argspec/evpn_evi",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/bgp_address_family/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/evpn_evi/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/bgp_address_family/bgp_address_family.py",
+ "name": "plugins/module_utils/network/ios/argspec/evpn_evi/evpn_evi.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "08f5d98064e1e08e07ee6a85b05a7c47f3d9fc1073ef4b4da6fcece37609ab2c",
+ "chksum_sha256": "e657aa784d67f251088a2cb86faa901fd53513c936d887aa4045c9d8026f5ace",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/hostname",
+ "name": "plugins/module_utils/network/ios/argspec/service",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/hostname/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/service/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/hostname/hostname.py",
+ "name": "plugins/module_utils/network/ios/argspec/service/service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2a3ee876a751592ce69707eb7d89fe013d8659752a50246b6b85b209f0afa4a4",
+ "chksum_sha256": "82d5f1b9d574c4753c3e7acee9c3ec0da539fdd67257f44e2ddebe976b9990a3",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/acl_interfaces",
+ "name": "plugins/module_utils/network/ios/argspec/acls",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/acl_interfaces/__init__.py",
+ "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/config/acl_interfaces/acl_interfaces.py",
+ "name": "plugins/module_utils/network/ios/argspec/acls/acls.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c703e02ad4dce33a34ba9c3400cf40c69681fd582d0e58e50abd50a416c4d638",
+ "chksum_sha256": "aee0703ab5ab05bc8845c32332b051ef94361f2256b01f9bb08efa7c1748256a",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/logging_global",
+ "name": "plugins/module_utils/network/ios/argspec/ntp_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/logging_global/logging_global.py",
+ "name": "plugins/module_utils/network/ios/argspec/ntp_global/ntp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7b44dce5019eaf9a054e47ed9c030708cd52f044503cababb8aa6fb8cd245892",
+ "chksum_sha256": "e65bbf39e241b04aa8e2258cb0aef1d1fa44a4d9b7707066d73848d2966096a4",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/logging_global/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/ntp_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lacp",
+ "name": "plugins/module_utils/network/ios/argspec/evpn_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lacp/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/evpn_global/evpn_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "764ac2b14b7564d087b58849c64cddd2b542b124d1741ca02c95e58153953911",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lacp/lacp.py",
+ "name": "plugins/module_utils/network/ios/argspec/evpn_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b5634a11788f8b6e6487e0e5a76362d22429900ca8ddf51eb4ceb00399acc6b3",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/vlans",
+ "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/config/vlans/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/lag_interfaces/lag_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "d74d58b5cf7ad1ddb524b74f220ae5af7314b646139fa2bda4d9126c185e43e0",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/vlans/vlans.py",
+ "name": "plugins/module_utils/network/ios/argspec/lag_interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fbc299c0ced2c4add0215d794aa8b50795ada8f68ee52a7a2d32cfa183ba9119",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ospfv2",
+ "name": "plugins/module_utils/network/ios/argspec/vlans",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ospfv2/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/vlans/vlans.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "bcb614781b29a9fd793ffd5eb53a4b7feb0a93db84c2ca40e53fcb828192a6e4",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/ospfv2/ospfv2.py",
+ "name": "plugins/module_utils/network/ios/argspec/vlans/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b42ffbbea2c5d6ddc9ef0660998d89390a7a08ac37822835984bf3ed2188c74a",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lldp_global",
+ "name": "plugins/module_utils/network/ios/argspec/interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lldp_global/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/interfaces/interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "a393a0e39a619c48351e257131f34e581756ea196feaa0579e06ca2ab980e4a1",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/lldp_global/lldp_global.py",
+ "name": "plugins/module_utils/network/ios/argspec/interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0d4386a7a6d435961997b8cfe058a801a2144200f939b321ea6bfc1505fd1480",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/static_routes",
+ "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/config/static_routes/__init__.py",
+ "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/config/static_routes/static_routes.py",
+ "name": "plugins/module_utils/network/ios/argspec/l3_interfaces/l3_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5d7ac8180a204ea0b11858b395e082160e52f64924f50c895214af1db41ad071",
+ "chksum_sha256": "fa202b891eca20e325fd07cfe7bb8c8b62ae8c1c0f90986fc2d11ebd60ee4116",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/l2_interfaces",
+ "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/config/l2_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "5cfd5f037bbe2a36ecaa598d0510c195fcec9100b82ca6fa6a5cd0a5051be051",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/config/l2_interfaces/l2_interfaces.py",
+ "name": "plugins/module_utils/network/ios/argspec/bgp_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3d7deaadebc8d74f00864d4d87666c974297fa01637522c6a5438193953dfdab",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts",
+ "name": "plugins/module_utils/network/ios/config",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lacp_interfaces",
+ "name": "plugins/module_utils/network/ios/config/bgp_address_family",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lacp_interfaces/lacp_interfaces.py",
+ "name": "plugins/module_utils/network/ios/config/bgp_address_family/bgp_address_family.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "21e764a5334f2bf9f4f9f642677acd7c333f65fac11664bbede8e37c4bcae070",
+ "chksum_sha256": "460ceeee40e7598109073d42741b0dffe67fe70c66a325e6c1fb0cfd7c509375",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lacp_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/bgp_address_family/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/bgp_global",
+ "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/facts/bgp_global/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/static_routes/static_routes.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "5120bfb8491af8a7eba0fe9aa34aed7584b68f52c893e1503a09c4553f09ab53",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py",
+ "name": "plugins/module_utils/network/ios/config/static_routes/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dcec46c13cf69215f2db6c7a83eeddbb5d96820d0408b53fd9c0c007a5ecab5e",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/service",
+ "name": "plugins/module_utils/network/ios/config/prefix_lists",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/service/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/prefix_lists/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/service/service.py",
+ "name": "plugins/module_utils/network/ios/config/prefix_lists/prefix_lists.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "efc3f3c00bcf17a9b56cd293e545cc6d38c096d0eebe1e72dfa00bc83bbb3846",
+ "chksum_sha256": "cf110869b334a0434d5455afb0f908ab7791e2826f3cb86786cf6b61d493f3fe",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/acls",
+ "name": "plugins/module_utils/network/ios/config/vxlan_vtep",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/acls/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/vxlan_vtep/vxlan_vtep.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "207545a5f0ceff4d0b5263f455bca714143347f279555c7669d470e63745b76d",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/acls/acls.py",
+ "name": "plugins/module_utils/network/ios/config/vxlan_vtep/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2134a281741cd331f69c6f932baab2cf803bf00560c790dac16808cc55a38b4a",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lldp_interfaces",
+ "name": "plugins/module_utils/network/ios/config/hostname",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lldp_interfaces/lldp_interfaces.py",
+ "name": "plugins/module_utils/network/ios/config/hostname/hostname.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0c0f5296b417c1eba895f8c8843cc99411f4a96fa560243ef92bf166776b3df3",
+ "chksum_sha256": "2a3ee876a751592ce69707eb7d89fe013d8659752a50246b6b85b209f0afa4a4",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lldp_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/hostname/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/__init__.py",
+ "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/facts/route_maps",
+ "name": "plugins/module_utils/network/ios/config/lldp_interfaces/lldp_interfaces.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d3949fb9c8b9448e84fce989aaec57be482668c7920451aea2423d725bbe0987",
+ "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/facts/route_maps/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/lacp/lacp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "300ba5cb0ef7e095c22f44d5f6b97949745d772edd1da67d8bb258e9da2a3c81",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/route_maps/route_maps.py",
+ "name": "plugins/module_utils/network/ios/config/lacp/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c7f2359e2128b9e5591db197d33fbcf002f07eb23c078dbfe9af3fc3cbc18a0f",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/l3_interfaces",
+ "name": "plugins/module_utils/network/ios/config/ospfv2",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/l3_interfaces/__init__.py",
+ "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/facts/l3_interfaces/l3_interfaces.py",
+ "name": "plugins/module_utils/network/ios/config/ospfv2/ospfv2.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6caa00263da8ce34f349a42e997a0ddd63954a3fe92e0e2499e9ad489a77f195",
+ "chksum_sha256": "bddbd16a2f3a16949e7d6d68aeae72c33916badfc79cd03549d5f8d7b7063daa",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/prefix_lists",
+ "name": "plugins/module_utils/network/ios/config/logging_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/prefix_lists/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/logging_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/prefix_lists/prefix_lists.py",
+ "name": "plugins/module_utils/network/ios/config/logging_global/logging_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc0759b6bf0f5481c27eeadc8fcec98f5ed75a2c98c89fbf3bc9d53d18406ebd",
+ "chksum_sha256": "9e3cc535a16266ea929afad7724c40519bc119627f8312411fedea16ab1a624f",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/ntp_global",
+ "name": "plugins/module_utils/network/ios/config/ospfv3",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/ntp_global/__init__.py",
+ "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/facts/ntp_global/ntp_global.py",
+ "name": "plugins/module_utils/network/ios/config/ospfv3/ospfv3.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a3602217d9c8cd2e629f92117f02aab87444888bc51cc382603b8e22e065ec8f",
+ "chksum_sha256": "736eb6daa9c808d54ce49fe1d90dde283856c61fbe5e6f7e13553c955ca4ad76",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lag_interfaces",
+ "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/facts/lag_interfaces/__init__.py",
+ "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/facts/lag_interfaces/lag_interfaces.py",
+ "name": "plugins/module_utils/network/ios/config/l2_interfaces/l2_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "96b35fdb9298af93724292ddb020ef441a25cbb787af940f806a3bd7417bf1d7",
+ "chksum_sha256": "3d7deaadebc8d74f00864d4d87666c974297fa01637522c6a5438193953dfdab",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/snmp_server",
+ "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/facts/snmp_server/__init__.py",
+ "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/facts/snmp_server/snmp_server.py",
+ "name": "plugins/module_utils/network/ios/config/ospf_interfaces/ospf_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5f71efd291dac87f655cbf99ca8e20a1966601b71c10aad12b08cd4734d24604",
+ "chksum_sha256": "383eeb77e1dfebff8ea69cad713d8e3f3468e91a07cc57de5ebbf4bdc1aa75d7",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/ospfv3",
+ "name": "plugins/module_utils/network/ios/config/route_maps",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/ospfv3/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/route_maps/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/ospfv3/ospfv3.py",
+ "name": "plugins/module_utils/network/ios/config/route_maps/route_maps.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ada439ee84e0d1a2ab7301e2e54e82160f60e969a79a2d004ff0e834c61c1cb8",
+ "chksum_sha256": "d1b3a698c940c2092d72f35fc6839e5f5a91bff84f34ebbcb492f7f89e3ff9b1",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/interfaces",
+ "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/facts/interfaces/interfaces.py",
+ "name": "plugins/module_utils/network/ios/config/acl_interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2c67945d2e056b94dd9d7b778d3f7dc2881ebb00192882d846db863701f612fe",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/acl_interfaces/acl_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "c703e02ad4dce33a34ba9c3400cf40c69681fd582d0e58e50abd50a416c4d638",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/ospf_interfaces",
+ "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/facts/ospf_interfaces/__init__.py",
+ "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/facts/ospf_interfaces/ospf_interfaces.py",
+ "name": "plugins/module_utils/network/ios/config/lldp_global/lldp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c6246168ca839894fb46959c82ac239133251c370565901795cf361d9e3c46e7",
+ "chksum_sha256": "5e138aaf2b9b9eb6f546d25f0957bec353342b61f8047f97f7e882c71e1422e9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/bgp_address_family",
+ "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/snmp_server",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/bgp_address_family/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/snmp_server/snmp_server.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "78f688254f56593bdbf0e8a42f53f99e14a14ba3f0d010feb0d3363269691996",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/bgp_address_family/bgp_address_family.py",
+ "name": "plugins/module_utils/network/ios/config/snmp_server/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d02fd4c43363ca7df4e9e9879e4cea873334bc4ce10f86e7bd7ae0df041fa6a6",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/hostname",
+ "name": "plugins/module_utils/network/ios/config/ping",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/hostname/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/ping/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/hostname/hostname.py",
+ "name": "plugins/module_utils/network/ios/config/ping/ping.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b66f9bbe31ee1de7a4acefb0fe020180477a46c7ed4787955bf5f11a714e9b3e",
+ "chksum_sha256": "59aaa34239c2ffb3176d64799286da43cd062d2b4fc22893990bcf03c9103961",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/acl_interfaces",
+ "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/facts/acl_interfaces/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/lacp_interfaces/lacp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "dbc626e83c3d4ce8c8aa42ee8903738f6ac2b1e16e8cda34dba4eebfdaebc01a",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/acl_interfaces/acl_interfaces.py",
+ "name": "plugins/module_utils/network/ios/config/lacp_interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8e711de61f5a2efc9b7c93a3f591fbcbbe96cccdfd8bfac0e62346d281b58537",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/logging_global",
+ "name": "plugins/module_utils/network/ios/config/evpn_evi",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/logging_global/logging_global.py",
+ "name": "plugins/module_utils/network/ios/config/evpn_evi/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "49a4a8a801ecd3502f201e3a46802e06527699fbfa6ef12c4c1358b7240df0f9",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/logging_global/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/evpn_evi/evpn_evi.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "534f88e839f73905c4eba1522537b7ae4b1fa6352ff1b3ae994d98c7b9b2a544",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lacp",
+ "name": "plugins/module_utils/network/ios/config/service",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lacp/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/service/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lacp/lacp.py",
+ "name": "plugins/module_utils/network/ios/config/service/service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ce8540d2638f6bb276cff4500215134ffce952a7de875f7b7121f91b75303de7",
+ "chksum_sha256": "2e81e0457003ea7380ead5e8550544b20ed8d05bdb2e4ced4a21d99c7319c345",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/vlans",
+ "name": "plugins/module_utils/network/ios/config/acls",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/vlans/__init__.py",
+ "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/facts/vlans/vlans.py",
+ "name": "plugins/module_utils/network/ios/config/acls/acls.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c7435c3235952b6929d1a24912e281516bc67c0aa3617cc73e43dcbd70d04c8a",
+ "chksum_sha256": "41b94b7f5977a81c90a558ef1e7e80cbeccf17cff3068c19fc3af31612c25921",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/facts.py",
+ "name": "plugins/module_utils/network/ios/config/ntp_global",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/module_utils/network/ios/config/ntp_global/ntp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b3baafdb7d6990f35b4ce823f1e6c78277526b508e417b0befefbc235f1605ed",
+ "chksum_sha256": "416613ab9788cd4cbad0a410b41e28b8602c927b4240c3591d65454a839def54",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/ospfv2",
+ "name": "plugins/module_utils/network/ios/config/ntp_global/__init__.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "format": 1
+ },
+ {
+ "name": "plugins/module_utils/network/ios/config/evpn_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/ospfv2/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/evpn_global/evpn_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "339748cd6a9d3b40c4174df59e390d2a0387254db482ca9189cc31a2411727f3",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py",
+ "name": "plugins/module_utils/network/ios/config/evpn_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "78986eb4f28519a2c2f3cd78f3d287c70e8d1804c9c465207a680ec89fba09fd",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lldp_global",
+ "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/facts/lldp_global/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/lag_interfaces/lag_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "295679089484f01af9517b998fb2e0caf5d810436bcf8e40e261a309b81b5865",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/lldp_global/lldp_global.py",
+ "name": "plugins/module_utils/network/ios/config/lag_interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "392c897fb49431138840ba657137fe5b7a0bc77aec11eab9daf3ab79c7002c36",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/static_routes",
+ "name": "plugins/module_utils/network/ios/config/vlans",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/static_routes/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/vlans/vlans.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "8fa9b1e49d5701c3308565b55f231299f7a6d986f4c8698c1b2d7d7d6b807476",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/static_routes/static_routes.py",
+ "name": "plugins/module_utils/network/ios/config/vlans/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4219bf270bcc7f6c374128d1c721ade8c3f1622da5a7377ca6115973ab0b183b",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/legacy",
+ "name": "plugins/module_utils/network/ios/config/interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/legacy/__init__.py",
+ "name": "plugins/module_utils/network/ios/config/interfaces/interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "d76972dfae66d04dadb152c4f023e58aaef97df0c1ae88e33bdc3d7cf0be2b45",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/legacy/base.py",
+ "name": "plugins/module_utils/network/ios/config/interfaces/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fe2f242690227e1d64e8b8fe886eb361d61852aa62966a163684808a1381b55b",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/facts/l2_interfaces",
+ "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/facts/l2_interfaces/__init__.py",
+ "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/facts/l2_interfaces/l2_interfaces.py",
+ "name": "plugins/module_utils/network/ios/config/l3_interfaces/l3_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "26ecb4ba4028670a5fdf7a70fa0b551a5a068db5730b721815659e618e1ec2de",
+ "chksum_sha256": "80d5e6e948da92d2ed41df019bc761282b0d9220c25c53c7fd4e6efa7c30281a",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates",
+ "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/rm_templates/logging_global.py",
+ "name": "plugins/module_utils/network/ios/config/bgp_global/bgp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "841f75df76900bfdcae91e9d7e44bfaf394e0d75b2a8d3e38e8e0b8e62997a33",
+ "chksum_sha256": "ab439c9625cb093beca2e87390a97baa4ecd7be4c483e6c4ad15158b19e04bfa",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/interfaces.py",
+ "name": "plugins/module_utils/network/ios/config/bgp_global/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "01ee7704f1fbcefbe1c43dcf83c782817ccd2ae09d1fe9532d667b5bfcf962d1",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/__init__.py",
+ "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/rm_templates/prefix_lists.py",
+ "name": "plugins/module_utils/network/ios/utils/utils.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ecc2c0b7aec428f8517f63a90dbee7a2b27fe5397e358cde7374a6d68c2b116d",
+ "chksum_sha256": "bf2039ac32f07f4585257dd7ac39ea79bd3a7e4a0954b5666461f36094dc7361",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/ospfv3.py",
+ "name": "plugins/action",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/action/bgp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "93929a555f348e8bbd9eac0b3e89846a4c011972480212cd378cea8497fc2b9a",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/l2_interfaces.py",
+ "name": "plugins/action/lacp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "38538d11bfe3e802bebb0e784aacd68b06f83229e706087a9471713311e459fd",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/ntp_global.py",
+ "name": "plugins/action/vlans.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b678c59980cd60b4ab5e3cc4911f1dead04603b229b1519d74ea69b94951906b",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/snmp_server.py",
+ "name": "plugins/action/lag_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bf89134b6e3ba53bdbffceb9b78b8a7f1e62ee2674fe2d3562da0f87d41d62cc",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/l3_interfaces.py",
+ "name": "plugins/action/user.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6ab404b96774116937c242b64b9e72fef658603adbfb92ac51c70561e8513eca",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/hostname.py",
+ "name": "plugins/action/interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dd7353433ed688982b69d5f12378ff56bb0b399f0734e27b1571a86a14384253",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/acl_interfaces.py",
+ "name": "plugins/action/linkagg.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ff8d18baa44b30871ea6d13392254549e24830173ed5d8184a221d1e6a069ba4",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/acls.py",
+ "name": "plugins/action/bgp_address_family.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1dc6a0dacc0045e950f423ad63369b8039a952667b78d5df1d7d49b11826374a",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/route_maps.py",
+ "name": "plugins/action/system.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1f9871abf19e014396d193920ca00c9d74a3e71dad7ee10d55c7681bb6cf1afe",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/bgp_global.py",
+ "name": "plugins/action/static_routes.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8de0b9b09aa5258394871d6addbd5b3c91f69654f011272248df5c50a4208a41",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/service.py",
+ "name": "plugins/action/hostname.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4a3a79e6c58e4de26c7d6e759b48befd4c79c541924c27ae6aad77f267e49aac",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/ping.py",
+ "name": "plugins/action/lacp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bf87176b11631d1b6e06b27b1b1f2526759597971fe3a2b753352f3653c50c18",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/bgp_address_family.py",
+ "name": "plugins/action/logging.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f7c0e2fb63b7fa9e0fed6883d6c09aa238231d1e23d99277547bf4c666cf99d9",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/lag_interfaces.py",
+ "name": "plugins/action/ntp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cde795fceb364b30850bb9c04ac589c84896800e1729ebe0c9a9c3478f4722b2",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/static_routes.py",
+ "name": "plugins/action/ntp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "003054666ce8d1b75f4361dbf51148249a5175926277cbc93dec8366e0bbab01",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/ospfv2.py",
+ "name": "plugins/action/ios.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8038683ef5fdc2ce4c9e768d61838c92685bed52cafba07c310a18fce0b192f4",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/ios/rm_templates/ospf_interfaces.py",
+ "name": "plugins/action/snmp_server.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f6e8876d90d0af81d076a4a10aca05c03ee0502b58e6ab3dc20e89dad38dda87",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/module_utils/network/__init__.py",
+ "name": "plugins/action/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "plugins/cache",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/action/ospfv3.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/cache/__init__.py",
+ "name": "plugins/action/service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/doc_fragments",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/action/route_maps.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/doc_fragments/ios.py",
+ "name": "plugins/action/bgp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "183557f42150c3888baca407c30a651bb6d0c70a06ac55f409b271323dfcbacf",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "plugins/doc_fragments/__init__.py",
+ "name": "plugins/action/l2_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "bindep.txt",
+ "name": "plugins/action/command.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c4ffa57ed44503cec6aa3f3afed6561072b69086a419f54d2f14a7a78941e378",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": ".gitignore",
+ "name": "plugins/action/acl_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "179a6d0780422c32653a71b9395a3ecb8b3859346ffa3e38ca3c8d90f8063fd2",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "tox.ini",
+ "name": "plugins/action/ospfv2.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "beb3313789623e5570d0871f6115ba563a0d92ea75e8e89cbd9f79045b4fe279",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": ".config",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/action/config.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": ".config/dictionary.txt",
+ "name": "plugins/action/acls.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b504c990735c090ba655b9acdcc12a537ebf7d2e101b308ef1edc8543d9ed804",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "pyproject.toml",
+ "name": "plugins/action/lldp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1cb6a45dfa2625123890b93ad7fdc156b063c16e8ae6dba11511a1d1986b0fcc",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/action/l3_interfaces.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_vlans_module.rst",
+ "name": "plugins/action/ping.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "10b2400f0867d24e0c9dd9771167bc7d4abccaf86ae28e1e2d66a12af2e8da34",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_lag_interfaces_module.rst",
+ "name": "plugins/action/ospf_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ab6ae3a80116dd72e573a4d84df49db2eb18bd5f8c8f53f98cb8d5a9ef51761d",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_hostname_module.rst",
+ "name": "plugins/action/lldp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0cc95a4e237b92e597e2c8a1ffc8d6f205cc849ae8eb148fe0e2457c10ed3047",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_prefix_lists_module.rst",
+ "name": "plugins/action/logging_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1a5311cd6c958e98e15cac5b965a5f5711e447f3724b6d144e2a50c31b5f1df6",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/__init__.py",
+ "name": "plugins/action/prefix_lists.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_bgp_module.rst",
+ "name": "plugins/action/banner.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3613c63ea42c85758bc78c1f2f5c970489a96411c41cc0ba7bf216994df8bdc1",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_acl_interfaces_module.rst",
+ "name": "plugins/action/vrf.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "67308e81ba922de82c070ad9f73bbac07c6e509b0b9289fdd5d5097928dcec6f",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_route_maps_module.rst",
+ "name": "plugins/action/facts.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "af30dade8c6261c751142d983650af7a4c8c2e142f2fceaaf3bb604e88d9beb4",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_logging_global_module.rst",
+ "name": "plugins/action/lldp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0f416b39f4491cb97399d3e45659c75253ed0251eb8cbc6f139ba8d546da7ef3",
+ "chksum_sha256": "43d06ad4def4673c1c239fe5c7d625c9e7a233437a7780c0d97c67ea4052acc9",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_cliconf.rst",
+ "name": ".ansible-lint",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a17502a2fd8ed08d762ce2e747b95c2b5dfe106d69afbaf97b8e141ac0597668",
+ "chksum_sha256": "b47f72e159f93a5ff07ea2534752e0fa977b214e9ac05c667fa83ac13be4e50c",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_l2_interfaces_module.rst",
+ "name": "test-requirements.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0a4f000d638f6ee2223d344c7b3c260cfcead1d04793e33c84da4cbbd30b1358",
+ "chksum_sha256": "ef11b7e31c53ed88a2352faacda33806dda00f45d4e9cce540a40e6a47ccbe73",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_lacp_module.rst",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "2a4e81147e11cc02f65e6ab53ba41463ae0610c13e9fb936f8aca9865d84d2d3",
+ "name": "tests",
+ "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": "729e51b6bc13d4cc985813fcd724ce1d71f68b749f3abeddeb0ce9676fd8f174",
+ "name": "tests/sanity",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "docs/cisco.ios.ios_config_module.rst",
+ "name": "tests/sanity/ignore-2.9.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3240939a84f27d689eacaf2ce4c89da3c03ee5a2a2739a127d196cb2691784b5",
+ "chksum_sha256": "fd021dfbe2578d6984075377ccfa70ef38c5643a3c9828b3b639c4751c964967",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_ping_module.rst",
+ "name": "tests/sanity/ignore-2.13.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7023b877663a6c3a1becc9c350a58714b683cf5b619540fca0c1bf83f85e88d3",
+ "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_facts_module.rst",
+ "name": "tests/sanity/ignore-2.11.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "408e15757983d665f877f4758a8c57a727efc7570da19c25589ffa984e2e780c",
+ "chksum_sha256": "81071aa2e12650110cdf71d787e2703af0ed3028873f7a51d71f6684dd0afc84",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_interfaces_module.rst",
+ "name": "tests/sanity/ignore-2.10.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f2081011b7cdb08c36dea3476b69ae849614273cd5e800e374edc9123fc04d71",
+ "chksum_sha256": "4abd57a7ab2a407892bb5873028919109aaa28d5fed12c2a0e4b9691076d713e",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_ntp_module.rst",
+ "name": "tests/sanity/ignore-2.14.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0ddbf43a41134d7100e58365a10c02a60674a1b37152d4bb07a2dd42b2e54d97",
+ "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_snmp_server_module.rst",
+ "name": "tests/sanity/ignore-2.17.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "096a9d4f385bae57afb0937a9157a7f0d30d12dbdfe7cbf1241c1372cc20024e",
+ "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_ospfv2_module.rst",
+ "name": "tests/sanity/ignore-2.16.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "714173b01c0e74b60c0a4ade21120ce5aba85f83247773de5b9763f0a7c41736",
+ "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_static_routes_module.rst",
+ "name": "tests/sanity/ignore-2.12.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "af3d82a1af37c9549d096096f205882d772383bb5c2535ad29efa8424cd413d4",
+ "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_lldp_interfaces_module.rst",
+ "name": "tests/sanity/ignore-2.15.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "619db6d298ab8b20cac142e84d3b24258ae70d3b5c092605a4c6ae2fa7d49e12",
+ "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_ospf_interfaces_module.rst",
+ "name": "tests/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "eace252eb99269d90dbcf998e90f843310fe6cade91380810d6061bee22778a3",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_lldp_module.rst",
+ "name": "tests/config.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f499f07239788d95c91a8413b7324e5370a88992e41ded149aeb130412e4f3b5",
+ "chksum_sha256": "de5087316490411841c67aa3307cfdd3acaea09875c9b4dee6852bca7c120764",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_logging_module.rst",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "11319b0906bb985c6b0e0901c5e273d444221402ddf1ab4d693908b763997f8f",
+ "name": "tests/unit",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "docs/cisco.ios.ios_l3_interfaces_module.rst",
+ "name": "tests/unit/requirements.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "51ba7650c179e3da62a417f92608431f7d46cf9fb6206772ecd3d5f703d856ee",
+ "chksum_sha256": "49ba996dc4735c3463e9af561344346dfae14bcc1a68096ce78364b377f0df1f",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_bgp_global_module.rst",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "2b3052d3f3676b9e7c05d3d23ffc5e33c566511ff76312f265c0a5a19988d256",
+ "name": "tests/unit/plugins",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "docs/cisco.ios.ios_service_module.rst",
+ "name": "tests/unit/plugins/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a29f5d8487de8a19789aa50a2472a63f8474e0d9b6d96d8613428be316941012",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_ntp_global_module.rst",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "bb28c1ac585aa7ff96e858cfee3aaa66cb41ae3f05d477a674813b01e0cb82d3",
+ "name": "tests/unit/plugins/cliconf",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "docs/cisco.ios.ios_lldp_global_module.rst",
+ "name": "tests/unit/plugins/cliconf/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4258587a9cfdfbeee648a807b5fc55951aeea63b99d716fee424262624a3f07a",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_acls_module.rst",
+ "name": "tests/unit/plugins/cliconf/test_ios.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0a4a2787f3aa190059402e90b8aa5cbc30101534babedd07a463409d57728019",
+ "chksum_sha256": "f46dc137e8680947b460f18c891b28964607d14143c57a7fb7fc85d8e8b956aa",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_linkagg_module.rst",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "12057a26e92b4392d41e985c6d2bd9384dfd649ea4b53e1fb8399ae3d7d0b2a9",
+ "name": "tests/unit/plugins/cliconf/fixtures",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "docs/cisco.ios.ios_system_module.rst",
+ "name": "tests/unit/plugins/cliconf/fixtures/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2d9c9ff70523a1f9db7b5d860607252a06b799c12ea8e001944075338f0c32c7",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_user_module.rst",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "3e0e3e1d9ad718db52097b1754064e310a3a434709203a7905f6e1a72fb71722",
+ "name": "tests/unit/plugins/cliconf/fixtures/slxos",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "docs/cisco.ios.ios_bgp_address_family_module.rst",
+ "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_version",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f96fd38f678215f341b66f5764d6fea593992a27ce3f6203bfe5c4195e8d9dd0",
+ "chksum_sha256": "e18e1a4f1640ca226a2f0d067a422af58218fa7f191a8b71394432a56177c7fd",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_vrf_module.rst",
+ "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_startup-config",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "538ab16f6e6a9f43d2cb77c154084efa56de287f64ff89a0e892356826778f6e",
+ "chksum_sha256": "d1a135373ce559af818475189bbfc8ff838f5891869b62e159e38ac4c30b3284",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_lacp_interfaces_module.rst",
+ "name": "tests/unit/plugins/cliconf/fixtures/slxos/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7bf92f7c407a17daa5b09137112c2d2764968e812b549b74cd7a8e8a45e255c5",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_banner_module.rst",
+ "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_running-config",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9d673389b36561b6c2d528caac50f253aa6d72c37b75c3c9226f9c12bec119f6",
+ "chksum_sha256": "d1a135373ce559af818475189bbfc8ff838f5891869b62e159e38ac4c30b3284",
"format": 1
},
{
- "name": "docs/cisco.ios.ios_command_module.rst",
+ "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_chassis",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ce04ca776c9b1fc469250df17e6208593590af7726605054cc49da7022ef471d",
+ "chksum_sha256": "1ab5008e1e19a8b1995b8c284856ae37ae5d242975b81057a3f0127fafa0f7a2",
"format": 1
},
{
- "name": "test-requirements.txt",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "7caa84509751a472a5f52c26affe4ae64f2146307720f99e4e4052d51c20d35f",
+ "name": "tests/unit/plugins/cliconf/fixtures/nos",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": ".prettierignore",
+ "name": "tests/unit/plugins/cliconf/fixtures/nos/show_version",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "87f689e56b912f78012677dba2e0237a65f7b3c1f903006cddefab21bf0689f2",
+ "chksum_sha256": "a21600440d1fbd2208fd81eeeaa632cfdf6b69c060bcff46e5a3f4a5f5c26f68",
"format": 1
},
{
- "name": "LICENSE",
+ "name": "tests/unit/plugins/cliconf/fixtures/nos/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "requirements.txt",
+ "name": "tests/unit/plugins/cliconf/fixtures/nos/show_running-config",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5872618044d38bb4f5cdce70ad973556e6a3312baafbe6f225e3fac78fba3946",
+ "chksum_sha256": "42f2e50d84821d1ce5c9ddfa082e7a6086254ef9908166a0d4523a3dc5b6b2df",
"format": 1
},
{
- "name": "mypy.ini",
+ "name": "tests/unit/plugins/cliconf/fixtures/nos/show_chassis",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5cc01a9c3e2a80b779ca004be5e4df814eebd494db650387b1bde98267a0b317",
+ "chksum_sha256": "a2890b7a8db9c1e8954a186fa311c8a2b44477b1d04bff9c32bf75b7797b4533",
"format": 1
},
{
- "name": ".flake8",
+ "name": "tests/unit/plugins/cliconf/fixtures/ios",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/unit/plugins/cliconf/fixtures/ios/show_version",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c3619890addbe81b337523c7d31461089055b267a3665f5f5c93d47fa0dbee96",
+ "chksum_sha256": "28896cfd7a101f137f8433db1efdb33343aa43425aaedc2d4f7eebec7e71204d",
"format": 1
},
{
- "name": ".pre-commit-config.yaml",
+ "name": "tests/unit/plugins/cliconf/fixtures/ios/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7a4199dd7889f971e485337cfa7d813b3895ebb325653cb65a49b4416370d409",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/__init__.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration",
+ "name": "tests/unit/mock",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/network-integration.cfg",
+ "name": "tests/unit/mock/vault_helper.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d67b11263a8f50b30bf43c7c2b4bdd8dc4f173f0b5dd22761311360dfbd56a1d",
+ "chksum_sha256": "3bf7834d18bd34473d0f4b898253177229a131f14364874efba584ff985e4a41",
"format": 1
},
{
- "name": "tests/integration/targets",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/mock/__init__.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/mock/procenv.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e869c848191bb9586fa25214c452cd18497a737e30ff2747977f8b8d4da620c7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/mock/loader.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2343d1f644250d4b616f0bf0a826fdee8fe306243d8412d44dd0e033352b262b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/meta/main.yaml",
+ "name": "tests/unit/mock/yaml_helper.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "fa89194ba60856f51500efdd1f802c5ca3b2e4ded9461d7b88847c427a43a958",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/aliases",
+ "name": "tests/unit/mock/path.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9b121bba6a0892e8ff599846aa1ea5c388ae3c8a9e6a85192f43b89cf992719f",
+ "chksum_sha256": "920ca3acb70a819bba26034101cf1e8497e8a5445f220a4df0cbacca03b21bd7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/vars",
+ "name": "tests/unit/modules",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/vars/main.yaml",
+ "name": "tests/unit/modules/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "34537c31909d55ab6461991eb2ddfae9e4dd32b1b7e01133aa040dfe08ae02b9",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/conftest.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "354440d86f684a9641f329807a687fe71fc66ab901207f7a166ecfa648935488",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/defaults/main.yaml",
+ "name": "tests/unit/modules/utils.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
+ "chksum_sha256": "fec06b445abd9398a3dbed94e82c9e76f7daa125c13f09e7842a24aefbb216ee",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests",
+ "name": "tests/unit/modules/network",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli",
+ "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/integration/targets/ios_lacp/tests/cli/rendered.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "364387abef4d57a5903ef74f788703e41ed604a98ef24bcebcc837c85fad934a",
+ "chksum_sha256": "c00bb9aff720be808ece114a8c4e3f18e4dff823186aa69f2502638a0f8658c2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli/parsed.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_acl_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "45475bede19466ee41f4b1d966a80c10988ece6e1ea77232c4c9883ef2f22123",
+ "chksum_sha256": "226ee34e9d64f4c1b63bee3030d846dffcf85bcb4f04a71e893bf0bb07b44ee1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli/deleted.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_lacp_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "83fb72d50e9f4e9ff7e3b906e1b4dba8ba4a08b0c8ff81c130a6b5c95c2c86cd",
+ "chksum_sha256": "d4ff68a41cb3751290da98519066dec8a071eb335b3edfb59511e5ae34567c9e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli/_remove_config.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_logging_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "be1b9226490c3801116b3325385dedad65ee514e21d853298e2aa94ca9f16766",
+ "chksum_sha256": "c06d947da67fb9595e789d26315d77f41cec2f9aa346d9fce452be9f15abc1d2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli/gathered.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_ntp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bfe347a63f6fa9d686ee7151ca4344f94c3fdc8c7e1ce73a637ec9e4924f38fd",
+ "chksum_sha256": "d2987bd3aa0842cc1aa97484424f9098814f539bccba1d94c12bf33d51200365",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli/_parsed.cfg",
+ "name": "tests/unit/modules/network/ios/test_ios_lldp_global.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "744f90515ff83553dfeff83df0ccf4aa826c3249574c42686fd9d6c41394d19c",
+ "chksum_sha256": "cdfcb9c7988f951aeb3e45819d62db13c4974b0772c96937a15388cb3c2f2084",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli/replaced.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_ospfv3.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "68518c550a5a993fc26f2508bbf71ef506bcb2eb7101ac3005ec4b7163515459",
+ "chksum_sha256": "8171f1e8dab0e2da0cafc913dbc92d80f144acfaea650dbe1b029eebe28ccaa0",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli/merged.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_hostname.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ce393c8b6381d3030b5d2d12e7338fa4423cf1891c816db296f544467860992a",
+ "chksum_sha256": "e8fd5109de3a0c00ef3bfc89d6673ef6ecd0b9ecc52742ec3215768172a2bb30",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli/empty_config.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_lag_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2ae637240277ae729d901550cd50ce19b6b29b1eca663eaed8ce011bec832615",
+ "chksum_sha256": "5c5afac7db102eec9b01bb5f185afb06fb118cb01c7ec2393af4a37c9829fc89",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tests/cli/_populate_config.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_vxlan_vtep.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fc650f89a8a2ebce685210ae5fa3d65d1d31652a993164005d3327f4861881b6",
+ "chksum_sha256": "df24e333fa123be819420f2086e938d257e35283352cfff3ba34df001f9c2262",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/test_ios_vrf.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "29d5dd5eb47eda13e50282508895716ec7d64cc528aae244ed02744f0891d5b3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tasks/cli.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_ping.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
+ "chksum_sha256": "b4b15f4a2ee334263a07bc2083dc599423f3cf5c34175d4b30e888fa99c932eb",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp/tasks/main.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_ospf_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "42f682d0706bde5cedd3667110b289d169b29ca20a1692b85c51bbe5f1e3131e",
+ "chksum_sha256": "c3be97fd55cc742ad99ba812a26f13a25dbf18857f037854b563873f3522dc21",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/test_ios_evpn_global.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "cb1f69e919e200020e995d8794f0f030bd284b68b39013c31326394693b60afe",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/test_ios_lacp.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ec2e679151350238a5994704b6b6536b0b1592e7d1dbbfcdc96b20a52820122b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/meta/main.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_acls.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "fec5deeba545dbd9a3f0a08d8013929ec7f163487a8dbb476c269d39488bc1cc",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/vars",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/test_ios_snmp_server.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d3d27b8a357a47365f026dbcdf7a1b3e2317e30a21df3f7070a99b65a7bd6adb",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/vars/main.yaml",
+ "name": "tests/unit/modules/network/ios/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "99f97d7709529ad5a370ef88ca759dd566abc45940443dbe28762778ab40c544",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/test_ios_bgp_global.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "689d3fd1c81b87dac82c7758c3c1721d93b83a5affb05d02a5afe43b89a33439",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/defaults/main.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_vlans.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
+ "chksum_sha256": "f888b8198120a922adf3fd3a8788186da0958fa1ceb4c383f67f4e92189a42aa",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/test_ios_bgp.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "16e9b1cc88b73924484d635ee5a75a1906cb759e11316cc3ca2bc6884e03d216",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/test_ios_l3_interfaces.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8fb3d1e70ac009d24328fe3680aaf7a62cd5382b8b985c5f41be8ab7aba03a9b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/rendered.yaml",
+ "name": "tests/unit/modules/network/ios/ios_module.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9080f77ada9c677a1f4f275d42ed6bb0123286aa0ce5462bd2c580f47dda0d07",
+ "chksum_sha256": "8a08cf8bab33ef88408880ffc6f8034be5e532945ca4f79d82b213426104876c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/parsed.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_command.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b633b4d6ccef76001f6764713b498278bf30e1dd964673e556fab42166480786",
+ "chksum_sha256": "0b4f793aecb789530a6f3f0001fafbe618ffcdc464ca69ed105bed3bf070e8de",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/rtt.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_facts.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f41a107502fd7e4be2baf717aafa72bbafc34125fa229ec2e123f7dd7225176e",
+ "chksum_sha256": "205430daf9d063ed7424fee04dd5fc937fc12771b13281a096ed259e394d166a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/deleted.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_l2_interfaces.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2b3bef8e48a4ebef6e417c5e919751cd9bd526308fdacd16395203eb4feb9f82",
+ "chksum_sha256": "5f8c15e6ef5a1e936ff5be4975802e5653150bb926dd50ad90baa27747332733",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/_remove_config.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_user.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bcff8a20978c31e6c69a155803657b695a5f65a32c494c6d83d65d008e8020d6",
+ "chksum_sha256": "af31457a05a3722eb39dbae567dcb89310cc242300e97b4f58cdfa7d8385fb84",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/overridden.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_evpn_evi.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "306dedea01d094347dc69f10f2e68ed7787372ed087fa1c5ee2d5953a8767016",
+ "chksum_sha256": "e029ae1db0cc2e55e9a3b1ce9ff340f6f6a6cec55d49645adfd57f269ce7a1e9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/gathered.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_lldp_inteface.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a6b0345d271e15e951a9a150a43aa0906c3c91a5290b27ae942ab9ece89cbeb4",
+ "chksum_sha256": "aaefaf4ab2bfd58d99396bb634db067b881eecd359dab67de6fc872b46869853",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/_parsed.cfg",
+ "name": "tests/unit/modules/network/ios/test_ios_bgp_address_family.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e350806f21caa0181d510feb9cb4e70185286e62aa3b52719b59d55172f2126a",
+ "chksum_sha256": "e262dda143867de45a2cf8344627aa9fd2cbe3c209c07a58c6b34d0cbbcbf58a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/merged.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_banner.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d9b1ee000ffc164233351430bc0f5f3c9d3a336fd09ef670bfa40a7e2eebafc3",
+ "chksum_sha256": "e3f093e6f88c6c61cc9bf8f3d2f3e8bdc31d7462f5312506255e645fb55efd70",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/empty_config.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_route_maps.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d80307c7fbf6fc328ebf0395601768f230c08d052cba3e459e4b1755635a2a21",
+ "chksum_sha256": "cc1fd7c6b70d2f623e2f348da1b65652e6fbee1b10911531d43bc2ce034b9d5d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tests/cli/_populate_config.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_prefix_lists.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8cc9ea8d4a47459ec32d942855702c789ba3347e0693f57313003f45020d8a7a",
+ "chksum_sha256": "017a9454d003407820fda4a0b61662bc7a4cccc82afeb867bf015fc210c11f1f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tasks",
+ "name": "tests/unit/modules/network/ios/fixtures",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tasks/cli.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_user_config.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "92081628d201c43cc40e2022f0ebac80f1ee5c1e78e19479d0b94780945a9657",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp_global/tasks/main.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/show_version",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7fc06936d093493791466cc5b227ef05b6a0175615a5ce00453f6effb74f9532",
+ "chksum_sha256": "dc71e5e1dc8e16c64ad26477c7b0dc0d0278a20be9dc4a6d53224328f239f79b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_route_maps.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a2764456add35e41e5109cefb0694cd6a708bcf77239259b47ed60d86fa06856",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_ntp_config.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2dc4f5c356e2ba9f40ec1ad94b5bc4e597c39657662156764465f156ab6cd7cd",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/meta/main.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_vlan_config.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
+ "chksum_sha256": "73a0c5b62bea4279d25deae4c2e04bf12c53fc3784297675a92eb98c911696fc",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_ip_interface",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/defaults/main.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_lldp",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
+ "chksum_sha256": "ad64c29374175a8d737d01ae856c16364c442fca9ea7b9447ab8f22d9ed78dad",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/tests",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_logging_config_ios12.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2923b7e2af16ca384a4c44c7fc1c9944367fffc1769b9ee6c41d73a9e0a2c1fb",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/tests/cli",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_banner_show_banner.txt",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "fcbd9e21fbc41c072eed699ebf08ba9fc0e86b9084e4e54eb701cc12d4c764d0",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/tests/cli/ping.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_switch_virtual",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d909fca9e8ee69ca9d7afa95aab1597af087869138a7e2ac3ec67cc97a4a6b7e",
+ "chksum_sha256": "db1b7ead274089538a05952a47f1e7800560ca1a552adc345c34dc2ab4c4f9de",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_memory_statistics",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "38375b22d4c94dad4289ad32a3360980e0e8f30d69c4a0c2ab1d8181d4fb811b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/tasks/cli.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_config_config.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "chksum_sha256": "6fe81e446733fef4e3643a80042ab4111b9b0c927599c4b5972ecea4c18b4ffd",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ping/tasks/main.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d4fb9eae8dce0d7933579bdf2d3f8795995a4058621bb90be902cecbb7fda0da",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_prefix_lists.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "dc8a935708bb8e0b18381fb2cbd56f7bd389aa02255d0b5cbfe36a5b633b1bf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_ipv6_interface",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/meta/main.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_config_defaults.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "114e89387a2b3cb37c475ed22f287f83dd93bd16a51845286b27f8355d1ae0e5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/vars",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_config_src.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "57d42d2e8e8b7a4b6cae566115ee42fecea077b525cace10cefc3b7dbd85f033",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/vars/main.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_interfaces",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d904ba1b1ee67876b5c1db5e8a2c063c500c99af83e05fd36d7584745f906957",
+ "chksum_sha256": "1cfa8bf44c06737f51019c8a3d7a6987fb91cb55c72a3a4a883f0eb75f13c27f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_logging_global.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "89a3006dad756d356d14bf9704c493b1ebac4267dca6344c6af536d53dd1bbf4",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/defaults/main.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_10.255.255.250_repeat_2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
+ "chksum_sha256": "f6102ec8eb37947bb6892dbb4c1252c794ef52376540c9d8ce2b9753aa613685",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_cdp",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "5abf76b46295216c079870fba8c70f8f6064ccd667e80d91e31b47ab84f6fd70",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_vlans_config.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9e3b415848259747054d6586d9a85787a48f2a5d3fd5866c41f8b050eadfae90",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/rendered.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_l2_interfaces.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f097e25e0459371162a4d0d2b645ae9ca361ad5d7fce778cab8793d7bcd2f433",
+ "chksum_sha256": "743adf2fb8dcad62933e91c19b47b2b0437868c7e50db9a4e556431ed696f2f5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_initial_ipv6_setup.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_size_1400",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8a2472a61a85371edf42157eb38de6446a90882922de4471337054194b698dff",
+ "chksum_sha256": "825819c8953b25588aadeb8264ebc23a52d06537049b7e3f4f0b9edfda1b7e45",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/parsed.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_bgp_config.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ff7d15cb956c6a22c1687aee06920653392f08ff0e53223afbab89ad7c7c98a9",
+ "chksum_sha256": "8e1448b74254646dea1644addbebf552013bc999c32b8a90f3141fadfd2e045c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/rtt.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_ospfv2.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c0c23c50849c89a60cce7588ee594c9f12fc89ae710516e3371d9cdf23bbdfbc",
+ "chksum_sha256": "f557ec41733d7040f5585b79e18b88623ace43d899ac80edc055e01c469240c1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/deleted.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_cdp_neighbors_detail",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "338693405501e01ca57d2ddeb40f482891c029a986864fc98946fc266265bf13",
+ "chksum_sha256": "6e29939eafbbdcd5d64d8558cf6f5fe9d7fa1b806e62b5f19b65b0401c9c9c44",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_remove_config.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_virtual_switch",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c6645517abeb9ff0bea3331bc844b12c1382b0eea4178be0dfa523a3a38c5a97",
+ "chksum_sha256": "a3c3bbfb2fdcb11e3f9721d7596800690969e51e7fc66ee2e5adae3b524f7177",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/overridden.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_repeat_2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3d05e7ad3cd69bd4b423def7c76b0200ec3daff4ce28f945cf1b53a001c52d95",
+ "chksum_sha256": "4962134fb2b2230a111b5b94f904ba094c12d0e0775e22c50b3db6599dbfcb36",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/gathered.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_inventory",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4395e95e40e7a0dfcf80e05ade1c443c37cfe70fe80fc4fdcfc0ee48ca7bca7b",
+ "chksum_sha256": "695c97917cde02fca97d816d92429a12142d6400180388630847a6938513829f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_parsed.cfg",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_banner_show_running_config_ios12.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "adda4ccbcef419623366dff6fd814799b732583587c8b71b9a49638079cf4c7d",
+ "chksum_sha256": "ed9d617788c3a95226fda5a0dfa4271afe77626709937b27a3af70ffde7af53a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/replaced.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_vrf_config.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "843a2bd9f2693a11e665a5f552e9de54fcc379ca3e06ee80ba2530f9077acede",
+ "chksum_sha256": "9ee43d746654712aed9c1163d6130a7b6de350a3efef3e6e228355378b20be50",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/merged.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_logging_config.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7ef2eb2c6dd20e38ac7f6058ced2a4902a838cfb902e8a32e33fc83bc8ffca5a",
+ "chksum_sha256": "547917e90b62a4ef7eb05c6a2527019acf8e3790d7d5a0c9f6b24af6a82a2fb3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/empty_config.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_l3_interfaces.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fd72a9b920445f668d61b31646621e0f9587851e61eaaa071f8034468e3fab43",
+ "chksum_sha256": "2836ef546936bc7b3ff57cd557f54d5c5024ecbf64451cbb4f0d9c937cdb71c6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_populate_config.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/configure_terminal",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e822477d57a3e430f8e379be1528039e6e4ee5eff278141cdc2c3f5c4ea4ad1b",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_ospfv3.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b45b7eafd03c14cb0a9737561ddd60b86b708aabe1223697376c56066fabb29c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tasks/cli.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_lldp_neighbors_detail",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "11544c73f3e88ab5384140abf1bedd0c2501f4ed13132ab56bd22a53909183b0",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospf_interfaces/tasks/main.yaml",
+ "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": "3ca85e538cabf8bda1ebd32dee2b5803e8e171ce955d7affe2f1417283cd92d6",
+ "chksum_sha256": "c8452a768d797ca829ff18314236a7275cf03a14f751c6f53c8b6711bc8a1d7f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_system_config.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ecb0f88d690961592ffec4c1dbeebb4b6883ed2fee08fd60117a3b7937b37949",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_dir",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "bf4241a7402fd70614b668b90da04f80c7430f8f4535a1eb0a40e989a1d9d48b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/meta/main.yaml",
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_version",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
+ "chksum_sha256": "a6290b0be0cd8622c90617eace7c4c8bb1508a77d33c2b0e7bb9d6f7f8967282",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_processes_cpu",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e8edd6276089ec830cb2978305dcff0f77cbe3a39f393eb0969c671a981d8d89",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/defaults/main.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_config.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
+ "chksum_sha256": "ee85caaab9dcd66f7884d65ec2258b31e6e293815063df652bf5e855c4eb9e62",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/tests",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/test_ios_ntp_global.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "40f53692102deb7518dcd712d547f7c69eb91ef39368f2580fae05c19007a8f1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/tests/cli",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/modules/network/ios/test_ios_static_routes.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "21fb9e42e6cd9ad1100664fd9547d6e42780dd49021fb75c61695fbb75171063",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/tests/cli/basic.yaml",
+ "name": "tests/unit/modules/network/ios/test_ios_system.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b72af07b1325252d2637dbc52720aa2d7248ea209ebe3769547b8de7f1fef584",
+ "chksum_sha256": "f8bcc32990f03f7c3fcd480ba2166364190e718787fac98303dc45fe829dd545",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/tasks",
+ "name": "tests/unit/modules/network/ios/test_ios_interfaces.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e4cde58f50818e45a86e4a41b795090fb15f98dbba58287705de31c480d0e28e",
+ "format": 1
+ },
+ {
+ "name": "tests/unit/modules/network/ios/test_ios_ospfv2.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8ea2f5f1e4b14adda3c4a1e59b0ee3ee8ddf6cc65bb102efcf0a5def60f41a3b",
+ "format": 1
+ },
+ {
+ "name": "tests/unit/compat",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/tasks/cli.yaml",
+ "name": "tests/unit/compat/unittest.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "chksum_sha256": "727203a3846be41893b78a4b77852a1658925e936fb19539551958a5d8e8fb81",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging/tasks/main.yaml",
+ "name": "tests/unit/compat/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "23b03c43261f87baff429735a53e1f52306b9c322f83ebdbc256c95fa6d02512",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces",
+ "name": "tests/unit/compat/mock.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8ef8138e4a1226b85dfb3567d9be04aaef39270af32ae62765b745f8f46cb0ec",
+ "format": 1
+ },
+ {
+ "name": "tests/integration",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/meta",
+ "name": "tests/integration/targets",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/meta/main.yaml",
+ "name": "tests/integration/targets/ios_logging_global",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_logging_global/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_logging_global/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "16f3cc0b8e2e2d5d9776298fab6f9d5648e4c35498db7605af69c8e97e122464",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/vars",
+ "name": "tests/integration/targets/ios_logging_global/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_logging_global/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/vars/main.yaml",
+ "name": "tests/integration/targets/ios_logging_global/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c39e3586ef18b985c228717ae7eac1e306f5e77a15d450a24628cf72e2d7e0ab",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/defaults",
+ "name": "tests/integration/targets/ios_logging_global/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_logging_global/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests",
+ "name": "tests/integration/targets/ios_logging_global/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "05a8a3246332f26b13525220bfb3ae2df1369eafe66f255ee76dc5d7d801fbd8",
+ "chksum_sha256": "d3b22fb7585f08098afcf881010b4d9348529e0f722c139b763f6b0c158965d9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "aa8e71b9953a2d70da7fac058ba031f21cfb5bfb71df81285552b5aedb16328b",
+ "chksum_sha256": "f014b1c94475c54528d1f3680735baaf6f2e8f4712df5a77665b969c98a16228",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "094afbbdd9097ab670c41df21b081705791bd7efa1ff26a741ccd2f9a21ed2a5",
+ "chksum_sha256": "f808045f76ecfd2f709fb9a4af7907660e8dfb4efa55fefc3744c32da9c20bf9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b04564f5e0e3b1f5527f25e60a42766131d47c8f14e5704c558156a2d901654c",
+ "chksum_sha256": "4573b578a199c5195348871a4f8d0b0daee309e9ee60368db6968c6e64ee15f7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e5c3d3a3d316de8d72b101a3200a8e81785710ef1f1386c0ea3dbf5da45eacda",
+ "chksum_sha256": "f25d81fb7693d57c2abd74e8739be232a9cbedbba1e9f8699050d04ea18d2b38",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8b4e94db711765525756701212c456abfea84fb4c38cb4cd45c9010dbad93927",
+ "chksum_sha256": "09a264fcae252de2ac6ee85b8af26b74cc369cb29dc450cb21eb209818796182",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ae60010ce6b859e677cd2fe0443293d0cbbfb6059f00416c2827998f8dba96c1",
+ "chksum_sha256": "2ecf2a5261b5c148d8c8142586318132ac92fd1663b20e91a2504ca2c2f9596c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "18a86eba9dd5b79bedad92815399beb362a10c96e402b18fc70884852a2c502e",
+ "chksum_sha256": "94cb8dc2e04d8643d4feeedaaf3eb159c60bb1a997c8186a0ad7f33912a8b945",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "91412f73bc4b57376bf22ae459899b858383999655c2365958695393758ff1ae",
+ "chksum_sha256": "7961543ce55fd097ff5b420ecabd3926f29b8631d0ef0e0a802ca601a177e2d0",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "205a1557e675e86da5aa68c11e65648bc868852e81d2d483ffdacbd72e058181",
+ "chksum_sha256": "6752b5ded2fc4b5361215ef8163a1ac17f48da2d1a26796414a2f7d7d4aab1f3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_logging_global/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2df68349950dac68eddcf5f1560371ca7d58868b3d5c978bb2047ec1d37a908e",
+ "chksum_sha256": "d8b45e3678e544bb5e707a93e1155402218b01bb88ba710417db77102a7bb634",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_populate_config.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "557b6eac4dd1d40678d52e9f59e84d8f9cddaf70a6be82787d43785fae35539a",
+ "name": "tests/integration/targets/ios_logging_global/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_remove_vlan_config.yaml",
+ "name": "tests/integration/targets/ios_logging_global/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "89eb56e9a96ba32ab65009fc09ebf8bbbeb74843839557a70f1c76c3ba2f2c58",
+ "chksum_sha256": "54432abdc418154d2bc2d0a75a1a26d387c2ef5cc217cdcd6ddeb6cc19bc9ad5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tasks",
+ "name": "tests/integration/targets/prepare_ios_tests",
"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": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
+ "name": "tests/integration/targets/prepare_ios_tests/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l2_interfaces/tasks/main.yaml",
+ "name": "tests/integration/targets/prepare_ios_tests/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0c72f070fd187ae7c13c368647de220f6b254ab856db38328f952f012461f480",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lacp_interfaces",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "044df3cbbc253645266ad8c2a377e8758a8fd53c7a7398818eeb2fe0220e0a1f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/vars",
+ "name": "tests/integration/targets/prepare_ios_tests/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/vars/main.yaml",
+ "name": "tests/integration/targets/prepare_ios_tests/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "866d49b9fb83bafefee3c2ed7ba79d894e2b28af83b4fed56ad48982c364a894",
+ "chksum_sha256": "851860fe2ed1258710d7fcf89ac5b7d8c3c87755e89ca56fdd79bea022eb2b92",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/defaults",
+ "name": "tests/integration/targets/prepare_ios_tests/templates",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/defaults/main.yaml",
+ "name": "tests/integration/targets/prepare_ios_tests/templates/config.j2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
+ "chksum_sha256": "a21d7b66f513ecb424fd6e23df9f0737c855281f3a5d0be6c856a0d2ce7af23b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests",
+ "name": "tests/integration/targets/ios_smoke",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli",
+ "name": "tests/integration/targets/ios_smoke/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/rendered.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "e87a35985502b9c92eb9c60ed83fdefcc11a17e26b421e067dcf7be3624c8503",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/parsed.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "fc43ad13fcf0465249c1941a418f61f36fba08a55afaef2aa8a7949ed028a7fe",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_smoke/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3de8041d6d7c288d7f421fc629c2bbcfd5b1faf29d3785fb1f8c39b6b5f36775",
+ "chksum_sha256": "7f9fa924aaef2895a7bc9899ba35028617be0e242888fd3558903a9a5c621bf2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_smoke/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6b15190694a3230175825f662ffc5be36c207a5508f8dd03e34d0f16dba801c3",
+ "chksum_sha256": "6cdc2604047d999342d2e29f3a546b9f8ceab22e37c2d4eaed5fb596bd4cd2f0",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_remove_config.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "337f2c06ea2b0c31adfc06bd0684edb480b1a333dc4d82fd36e74e6efad7d6ba",
+ "name": "tests/integration/targets/ios_smoke/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_smoke/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "83acc10766bff99eaf1085cfc2fab4b54e4101edfc70d06c19f65eb5f90f0478",
+ "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/gathered.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "5bb10615fc266a5079e9adaf3307602bdefac54f4e8c9fda96954eb59ddc1485",
+ "name": "tests/integration/targets/ios_smoke/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_smoke/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "05d13aca3673ed53547e84c3a96b852f6c6b21e31b250ccae1a3c9dc8a455415",
+ "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/replaced.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "6fd2582bf431113cefd8a863baf6d1b6908f5cd142dccde32ef536feb29d0702",
+ "name": "tests/integration/targets/ios_smoke/tests",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/merged.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "8a4d9930854480ec68685dfce6a5ca53170d519fa93b8b10ff89d84c2fef906d",
+ "name": "tests/integration/targets/ios_smoke/tests/cli",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_smoke/tests/cli/misc_tests.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "200cc72937b5aab4388efc5e85b4f590dfae9bbbfd9668c2c8390d42c73cb1a3",
+ "chksum_sha256": "7eb9e4e697c8432c1a40e9408f7638d887c347aec871bfa157bbd7c3f0586b95",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_add_port_channels.yml",
+ "name": "tests/integration/targets/ios_smoke/tests/cli/common_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "37e0850a33908a4856f7167d6e488cbf3b6060950a032aae1f1006dae560d2aa",
+ "chksum_sha256": "3cadb8dae7de5b5be84fcab95fd6e5f65816069841a996010af41c32b8438897",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_smoke/tests/cli/caching.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ac8361b624da0372fb79c80bd147c5b9bfed4d4140d0be7fe9957b75e414c61b",
+ "chksum_sha256": "618ffe0e7bbd5a6d4e6172cdcca046317acbb06f8dc8b4de4e214fec6e642640",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tasks",
+ "name": "tests/integration/targets/ios_smoke/templates",
"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": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
+ "name": "tests/integration/targets/ios_smoke/templates/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lacp_interfaces/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_smoke/templates/defaults/config.j2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "42f682d0706bde5cedd3667110b289d169b29ca20a1692b85c51bbe5f1e3131e",
+ "chksum_sha256": "c67459067166baed6059b02907fb2692e34868270185b09fcd9f5d7c3ec013d0",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists",
+ "name": "tests/integration/targets/ios_ospfv2",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/meta",
+ "name": "tests/integration/targets/ios_ospfv2/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/meta/main.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "bf9e0e41402b83f7506fedba9515bd73a0fef00d77e63f09f9b2eda0ee5c3754",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/vars",
+ "name": "tests/integration/targets/ios_ospfv2/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ospfv2/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/vars/main.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f6b69c83d4e7ac84d0a761ce026762da15b9dae70539e1c995090358c95a0e95",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/defaults",
+ "name": "tests/integration/targets/ios_ospfv2/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests",
+ "name": "tests/integration/targets/ios_ospfv2/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "92341a0e0de58ed85e0e12651de37e00217256797d83723f5bf31f5a62ed8b10",
+ "chksum_sha256": "be91779003c353db09835a7ade40aa7e16311e93c3a111335d4caea13b27c3a4",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "10d8202df57a09927329626e4b89a45038167e54d9e9fbc4c6c6ade64129fff5",
+ "chksum_sha256": "fcfa39efe63ec56350bd75b0b4ded134aa99c4f1a810039fcf0744eed952a0fd",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0c4dfbbfd610bc72cc634465a0668fa3daabd76ab0771a293c38e366a32a6842",
+ "chksum_sha256": "8554a710fa447dcbe0f7f0097a0f81b7129deecd19b5f4f6caafaf80bef690f8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "db20920f776718e96e3c251c29423c0a28ac5000c6454f49943f65ac20fae7d8",
+ "chksum_sha256": "b2013ced0c8268e36db6925558607e68fddb5887092aa3d520a2b6e1318fc7fb",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/_initial_vrf_setup.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7c76894bdbf1985d4a69785d8f45a5ee011d15fdeb96d95a619e828d5fe686df",
+ "chksum_sha256": "c35a0a936bc8f7a82cefc3c831cfed82f738026c5b5cf5832c06ed42f7098309",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "93cc5c3bd91b11ab509b884e143d023a851d0046e2118d1fc2eb22ae074d2d58",
+ "chksum_sha256": "3e11b9f26e0eb1e022969d8091b88bd0c02cb8e4e12649c63d2f526009bd6ec7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc8a935708bb8e0b18381fb2cbd56f7bd389aa02255d0b5cbfe36a5b633b1bf1",
+ "chksum_sha256": "71aad36583afacee1f2d50726b8a99cffc3e17566f1297f8c06cda6cdb9483c5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "64b13600c268b1597db0c24934003d8104a53a3eafcf0539b2ad6382ea92e5a8",
+ "chksum_sha256": "be6663b98bbde670ccf5f4c019cc50bcf3461c7f1df79d59206e0dec1f9c87de",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c1842105d82cd689ea4cea57e9f151bca2e845204e00c78142b60cdac10b401f",
+ "chksum_sha256": "030a148d0e9b7d4e89581f3b82aeb06ce828a2a494fcebecac6a99a5fd9be893",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1baa1acb44f8c05b1081b7d2d49d7d679a694b1eef20d63cf8b7eb33df4a441d",
+ "chksum_sha256": "e1995543982bd7f2a4aee73e5a9fce445b21af1d6ffb5f410d34b372dcd904ae",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f1b300e29142c3cb1fa9e84e476577e0909a1f5e13c9f6bae1036eb2f021402f",
+ "chksum_sha256": "c2c2d35e0efc547f71effa33a8e7de17a8c8447b28d79a00d0ad56fe4a29d130",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tasks",
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/parsed.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e36682d7d591a6ebd1311a1b34bfbeb402c35f98f14f9d9521a9839f1a5fc081",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ospfv2/tests/cli/rendered.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3c2988c367bd38b6fc431b3184c661086ae4bab311882e80c941cae6db04344c",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ospfv2/vars",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_ospfv2/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "8649ac5af985e516bc0be12ea860f9ada7a4454ab14ecf2d056dc16565a95e55",
"format": 1
},
{
- "name": "tests/integration/targets/ios_prefix_lists/tasks/main.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "8fe724448a906aa2a584f11792118430e87edaab920e85f9f8042786edd08daa",
+ "name": "tests/integration/targets/ios_lldp",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg",
+ "name": "tests/integration/targets/ios_lldp/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg/meta",
+ "name": "tests/integration/targets/ios_lldp/tasks/main.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b0906e69a469f54c61369370c1de70ece7ed9341c9647ae69f471544fad206e4",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_lldp/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_lldp/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg/meta/main.yaml",
+ "name": "tests/integration/targets/ios_lldp/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg/defaults",
+ "name": "tests/integration/targets/ios_lldp/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_lldp/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
+ "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg/tests",
+ "name": "tests/integration/targets/ios_lldp/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg/tests/cli",
+ "name": "tests/integration/targets/ios_lldp/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg/tests/cli/basic.yaml",
+ "name": "tests/integration/targets/ios_lldp/tests/cli/basic.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "01543795b9d0559974aa6eb2e501541a442c6d8a61361ab6ce30eb7d7a0610e3",
+ "chksum_sha256": "9f61afc65151115e5a86c79276acf3c3ced37cd6df01cf54550ef54252792ec7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg/tasks",
+ "name": "tests/integration/targets/ios_evpn_global",
"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": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "name": "tests/integration/targets/ios_evpn_global/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_linkagg/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_global/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8171ce9eb1bd2474dcb5e0f86eeb142567bac349514708f53c24829283fd382e",
+ "chksum_sha256": "40cba4a01ca4d7671041cd1c34aad247ab33b8027f3143233bab09d039780e3d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_evpn_global/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/meta",
+ "name": "tests/integration/targets/ios_evpn_global/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/meta/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_global/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/defaults",
+ "name": "tests/integration/targets/ios_evpn_global/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_global/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/tests",
+ "name": "tests/integration/targets/ios_evpn_global/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/tests/cli",
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/tests/cli/basic.yaml",
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "93546203b3b3da6687b1f61844ce847c75681b3b2ca9d9456bb1ad296603de72",
+ "chksum_sha256": "bf27aff9be6f72a1bac5da95577b426f851356b9afa907bc35a5100f51b3500c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/deleted.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "df48d4875d6c309498c93bf1654170b5de8dd36f00cad9b7dda06fa0ec6135d8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9739e364f374e25ab4075944df0f36a45c1937d5bcaee64b9120d651349f7297",
+ "chksum_sha256": "8c950ea407d98e84ee9ef11ae5f11cdd1402a460f48159591eed290af69aa730",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e03ae6e52f8d7161565991a66935845e9141dd6b6bf67f939b1651c229cea114",
+ "chksum_sha256": "e6e04317befb43f382b3b5e4e37757fd905ea5f8099327bb255ce3031da38285",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/merged.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0b7ddb734d42978b5ebb82d436a354e8fae2fce18e60a1546f2d519cead08390",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/_parsed.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "54905a1be066debe036046408f5d40d3ceeccee3074090e3d1c459aeb4355e67",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/meta/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "1cb6068d536690bed4bb86b5901cc97b78325b5ff9a6104805278172427c9af3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/vars",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/replaced.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1c1eda73556b1082527e3387499aa6a6d5d6734bcdd7070409964563ef73734b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/vars/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "01c2e3f60ccbc16f88d20a85379876a3b6cccef207da69a280ab644c382beaea",
+ "chksum_sha256": "e0e4acad796d01a6db7a44d08d8ae4a7eefa3da818382224189c30eb5c6bbd92",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/defaults",
+ "name": "tests/integration/targets/ios_evpn_global/tests/cli/rendered.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1ee5e0cd3f90d1d5461cc3de8eec434fbb245688d2c99d12a477d0ee565f19c9",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_evpn_global/vars",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_global/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
+ "chksum_sha256": "a930c7415288124acd312b6bc09b1120f8f8085b31c7267a1e183467377b70e0",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests",
+ "name": "tests/integration/targets/ios_snmp_server",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli",
+ "name": "tests/integration/targets/ios_snmp_server/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e7aa25fcb776c99a3453c4929c00250575ca72bce253914a95fd21d769fb1f21",
+ "chksum_sha256": "e41e847b30cdc92d4ba8d8ad59e109a2acf5fdb2207b9b345199ae1692d5c386",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_initial_vrf_setup.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f7bfcd11a8eba0c26e564d5b5600060584998da25484e8e92443c602067f72db",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/parsed.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "4d452abe349d6f966fb7db5133c3039ff9ce202d6b98a16a157f405d7a6f1ce3",
+ "name": "tests/integration/targets/ios_snmp_server/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8dc8ef4a203fd9de24d4afe860f25acd653f1f3512c445be6aec069b6bf4b22a",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_ospf_proc_setup.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_snmp_server/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a4b82d41f2e4894c7d11e847a8e436b9e29fee5159acc72269f651697a7f62da",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tests",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "46c2410786bf0f78b7645d8a6bf4dda5825d8949e13851505d83e30277257877",
+ "chksum_sha256": "314132891ee35f3cd44df768368899b2b9fa9ee51d3f9510796e9f147660526d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6447bcd80411c1d8f04d26582c2ab5dfef6ced7cd2be9a0681e609601bfe27e1",
+ "chksum_sha256": "5d324239706acbc0938a35cebdce4f126c4ac1619c44d71e8f1f7b6df123df26",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "537c4819a15fc7842de8cad0e8b74745f2c5b57d98db904078c9d8316b71ba12",
+ "chksum_sha256": "2288230f503cb44cb1872ec2fa86e0108853bcb9f0e9c4c65c26abbf60cddd64",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d6cba5ef4746373c30e85d18fdf83be09ad50d9ee4c312a64422d34cb325e4a8",
+ "chksum_sha256": "ea45879cb4d6feb66cd45135335501892f30377f0ae7195e9caef0a6cf186f01",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ed4186a91d1cb41e8d7d24196821f6a055801eba77fc72c59af07eabb43f25b4",
+ "chksum_sha256": "32f48d0476fccf4880ae5670b4c12afeb89951421b643296d3540a42970a2c3c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e9167c84a1c224be768474641ba50f3718606e1c2a70b96e6b6f146ba38a410b",
+ "chksum_sha256": "07644781622568558c597427f05f80ebb7da335eac6a6ab67dd37a7b6f86a60d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f3c31ce095304e438dfe658c12a1f429d9ff8764217ab52bd3dba99e0dbb8e99",
+ "chksum_sha256": "e229df97b6ba4cfa166b966f97b69f69c348cf1d3b61e42d82869a3c8b4cef45",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "35a08ce5645ba94bf387db987ae44c6d70568a28fb7350cc45693e9fd55d2ec0",
+ "chksum_sha256": "7b544236b53c9b2e7df27b49d1c854d4fa0000d4508dbb639d366407fe35617c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/parsed.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b950ea2795a909e67285cae4843c7dfadd52bc1521fd8d2138da9c7e6675aee6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "cba89a05752a9e1102b676dab55609ea2cf326cd88b3900015a5e0b178032fab",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_address_family/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_snmp_server/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_snmp_server/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "af949d2e120137280e403535d60cb3485ba4baa88a48d465d066d2151defacff",
+ "chksum_sha256": "5e91e745876e69219bc6bfbd0cbdd32a8c148c856b1646dbbef806719634d3af",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces",
+ "name": "tests/integration/targets/ios_acls",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/meta",
+ "name": "tests/integration/targets/ios_acls/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/meta/main.yaml",
+ "name": "tests/integration/targets/ios_acls/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "a35279615971415b54c2877e35c58f430c4b5ecf79ab75cf8b1145408aa2f1c8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/vars",
+ "name": "tests/integration/targets/ios_acls/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_acls/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/vars/main.yaml",
+ "name": "tests/integration/targets/ios_acls/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4e225d3253a22e2f0eba465f6fff8324396a02ace3d628e848b7a909af026064",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/defaults",
+ "name": "tests/integration/targets/ios_acls/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_acls/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests",
+ "name": "tests/integration/targets/ios_acls/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli",
+ "name": "tests/integration/targets/ios_acls/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ade890c5c428f4f2ada261b01e89f9149d27d8add293430df56161249cf0f6b2",
+ "chksum_sha256": "42615f514256b1a7d451a57c904dafc5c7887df9bd1c968f5332b28b65ee999a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bfc3c984e0da8a8065696a6a4801d945bfaed1f84146f7c3c9745ba4468d0e1d",
+ "chksum_sha256": "2110fa4eadb1937613e4b408e6d87ec92dd2e55ea8d01b22a3f058fe670aed83",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3ccde47cab8fd1f7d6eb91c8a1744831097c27bebbf655e15d71fd2456db7f2",
+ "chksum_sha256": "46fbc34461ca07fa76173803e47b59638be46b109cf3033e12ab8e741e66d203",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "77cc14435d04e3f72f0ab9457713fca28de7a508c865c08df619ce999d7ace03",
+ "chksum_sha256": "9c3c4569c578ec8336fa353111482916a96d9b9f7ab0f3262e9fe3fb92ce0f1e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4ed4649e2c9b10b71a7ae63117d06ec134eae6b2182f26bb8b04eb911e609707",
+ "chksum_sha256": "4aa123dc7a38645f48ca983339b0a43702f527b615514715a05689ddda18f592",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d2a2840acaf208fa439d00dd3be862789bb3e249ca568c9e3a0f958ce4c92987",
+ "chksum_sha256": "aaf7849f1fc016f09813c37599fa2f567313c681920a349d3976117ca61033bf",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "030195c5574fcaa46ade5d2d9f640d1b1668c41025f0c78032cdebd9ebc4ef86",
+ "chksum_sha256": "ecf088fce17e2e3b5612311c4c10d551e1c0fc20716a2cba7f0424611b989fff",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_acls/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "74906256718324f2c376a9dcb3be7bbadb2487067b1617e6d90c16f0a109cfcd",
+ "chksum_sha256": "40cfb30ce1b837e512a4e0a8e5d8aaa90026019732f6b712c49fa8f86c742f46",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9ecda90386ebc75e0cb6e8a820a5c4bf172d4ca7bd4dbe399a4733aa6c08d07e",
+ "chksum_sha256": "7c7af067764f9e7823717d5b09d690789309bdb098c621a8886151cb7c5126f9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4ce15cb1c54d6ba216f276f2622dca7eddceeda339ae1b775c4e82ed0eca5ae6",
+ "chksum_sha256": "22dff6930e31491a66e9b9f96b3adbb57e5619f9bb1cc04e699ad09651dfb23d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9c065775b6484b284e03beb65d1e250361c09fa4fc20e5006058f69e7c4eebc5",
+ "chksum_sha256": "a6cc930a39872ad57c5b74919747421b13b0a0c985100d70763b27d0f646d0f4",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_acls/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5a8e64e20ebea7d3a898216c6e256a3c0dccfcfb68a0671e3bf160e1f6c1b935",
+ "chksum_sha256": "855485788ef3b774a156a6a7780597f2c73639a9da4f7093bfe3289ca1e67853",
"format": 1
},
{
- "name": "tests/integration/targets/ios_l3_interfaces/tasks",
+ "name": "tests/integration/targets/ios_acls/vars",
"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": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_l3_interfaces/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_acls/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "daa688f229d7e8db61d23cc61ebc79ccff40a6e9af6de742f4cf5fde2fab74be",
+ "chksum_sha256": "3706a44db972213dcbf36515e04647a1cc508296cc5faea5afd0666dcf499dc9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server",
+ "name": "tests/integration/targets/ios_lacp",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/meta",
+ "name": "tests/integration/targets/ios_lacp/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/meta/main.yaml",
+ "name": "tests/integration/targets/ios_lacp/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "42f682d0706bde5cedd3667110b289d169b29ca20a1692b85c51bbe5f1e3131e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/vars",
+ "name": "tests/integration/targets/ios_lacp/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_lacp/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/vars/main.yaml",
+ "name": "tests/integration/targets/ios_lacp/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5e91e745876e69219bc6bfbd0cbdd32a8c148c856b1646dbbef806719634d3af",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/defaults",
+ "name": "tests/integration/targets/ios_lacp/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_lacp/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests",
+ "name": "tests/integration/targets/ios_lacp/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli",
+ "name": "tests/integration/targets/ios_lacp/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cba89a05752a9e1102b676dab55609ea2cf326cd88b3900015a5e0b178032fab",
+ "chksum_sha256": "be1b9226490c3801116b3325385dedad65ee514e21d853298e2aa94ca9f16766",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b950ea2795a909e67285cae4843c7dfadd52bc1521fd8d2138da9c7e6675aee6",
+ "chksum_sha256": "83fb72d50e9f4e9ff7e3b906e1b4dba8ba4a08b0c8ff81c130a6b5c95c2c86cd",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5d324239706acbc0938a35cebdce4f126c4ac1619c44d71e8f1f7b6df123df26",
+ "chksum_sha256": "bfe347a63f6fa9d686ee7151ca4344f94c3fdc8c7e1ce73a637ec9e4924f38fd",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "314132891ee35f3cd44df768368899b2b9fa9ee51d3f9510796e9f147660526d",
+ "chksum_sha256": "2ae637240277ae729d901550cd50ce19b6b29b1eca663eaed8ce011bec832615",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "07644781622568558c597427f05f80ebb7da335eac6a6ab67dd37a7b6f86a60d",
+ "chksum_sha256": "ce393c8b6381d3030b5d2d12e7338fa4423cf1891c816db296f544467860992a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2288230f503cb44cb1872ec2fa86e0108853bcb9f0e9c4c65c26abbf60cddd64",
+ "chksum_sha256": "744f90515ff83553dfeff83df0ccf4aa826c3249574c42686fd9d6c41394d19c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e229df97b6ba4cfa166b966f97b69f69c348cf1d3b61e42d82869a3c8b4cef45",
+ "chksum_sha256": "fc650f89a8a2ebce685210ae5fa3d65d1d31652a993164005d3327f4861881b6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "32f48d0476fccf4880ae5670b4c12afeb89951421b643296d3540a42970a2c3c",
+ "chksum_sha256": "68518c550a5a993fc26f2508bbf71ef506bcb2eb7101ac3005ec4b7163515459",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ea45879cb4d6feb66cd45135335501892f30377f0ae7195e9caef0a6cf186f01",
+ "chksum_sha256": "45475bede19466ee41f4b1d966a80c10988ece6e1ea77232c4c9883ef2f22123",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_lacp/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7b544236b53c9b2e7df27b49d1c854d4fa0000d4508dbb639d366407fe35617c",
+ "chksum_sha256": "364387abef4d57a5903ef74f788703e41ed604a98ef24bcebcc837c85fad934a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tasks",
+ "name": "tests/integration/targets/ios_lacp/aliases",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9b121bba6a0892e8ff599846aa1ea5c388ae3c8a9e6a85192f43b89cf992719f",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_lacp/vars",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_lacp/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "34537c31909d55ab6461991eb2ddfae9e4dd32b1b7e01133aa040dfe08ae02b9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_snmp_server/tasks/main.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "e41e847b30cdc92d4ba8d8ad59e109a2acf5fdb2207b9b345199ae1692d5c386",
+ "name": "tests/integration/targets/ios_bgp",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp",
+ "name": "tests/integration/targets/ios_bgp/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/meta",
+ "name": "tests/integration/targets/ios_bgp/tasks/main.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e03ae6e52f8d7161565991a66935845e9141dd6b6bf67f939b1651c229cea114",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_bgp/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9739e364f374e25ab4075944df0f36a45c1937d5bcaee64b9120d651349f7297",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_bgp/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/meta/main.yml",
+ "name": "tests/integration/targets/ios_bgp/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/defaults",
+ "name": "tests/integration/targets/ios_bgp/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_bgp/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/tests",
+ "name": "tests/integration/targets/ios_bgp/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/tests/cli",
+ "name": "tests/integration/targets/ios_bgp/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/tests/cli/ntp_configuration.yaml",
+ "name": "tests/integration/targets/ios_bgp/tests/cli/basic.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "11d03d940194a739c19346b9e626e425de69706b572ff7a178b90cc21a6f36d0",
+ "chksum_sha256": "93546203b3b3da6687b1f61844ce847c75681b3b2ca9d9456bb1ad296603de72",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/tasks",
+ "name": "tests/integration/targets/ios_banner",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_banner/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_banner/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "chksum_sha256": "eebaf78d8d30ccd861ee6d250aec3bc87871e249b6875f8b0f44a4a3fc828680",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ntp/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_banner/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ea10fd1166a91f0a0c747a5be6a85f313c52f5f3d9f33cdc68e9424f3cc56a42",
+ "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces",
+ "name": "tests/integration/targets/ios_banner/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/vars",
+ "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_lldp_interfaces/vars/main.yaml",
+ "name": "tests/integration/targets/ios_banner/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "887240ad30c1751c17e47be11a0cc78b5c323d442967b30457bba74054d6ada3",
+ "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/defaults",
+ "name": "tests/integration/targets/ios_banner/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/defaults/main.yaml",
+ "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/basic-login.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
+ "chksum_sha256": "455be068cdb2741b681458831a33abbe656d86186a21d5dec3425add135dc14a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests",
+ "name": "tests/integration/targets/ios_banner/tests/cli/basic-no-login.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3deefaccfe8f72086372732ab08319268107114dc4cf238dfef54e2974b29b26",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_banner/tests/cli/basic-motd.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2f9346d2348dd942748aa47f61b6aff3cf6e6ad48f94121546f09266930d371b",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_banner/tests/cli/multiple-login-exec.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4c2ad7f508adfa637bf8f80e8afb4c68eeb24061eb0e54b670cb020133a38f63",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ntp_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli",
+ "name": "tests/integration/targets/ios_ntp_global/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "def5a49dd2014e2079ca9312f36b626f9bfe5606d255f306eec9dc700ae9f7a0",
+ "chksum_sha256": "7fc06936d093493791466cc5b227ef05b6a0175615a5ce00453f6effb74f9532",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "007a1de94220246c924b2d51649d632c2caee32e05fdb91f25df2e14e0e602e8",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ntp_global/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c677840c5b24b7fbc56a54cbe609c24c198bf12cb1b9db9218316a45f9481211",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ntp_global/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b9cdedfb409a6a585b41bbb846c76b74db84cecab5bdbfeef8886855f6cd1a51",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tests",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e44e3d1b77f9197ef4361d6dbf20eded541d03f581394845c3696a83e441f2ad",
+ "chksum_sha256": "bcff8a20978c31e6c69a155803657b695a5f65a32c494c6d83d65d008e8020d6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ca080f4e61b3ed9435f09d4ce2341f2851ab47817e80383ce5c329cb89216b8f",
+ "chksum_sha256": "2b3bef8e48a4ebef6e417c5e919751cd9bd526308fdacd16395203eb4feb9f82",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4ae00f45065d40f19d7d616af65721f965809346dac870564a152f74da00bffa",
+ "chksum_sha256": "a6b0345d271e15e951a9a150a43aa0906c3c91a5290b27ae942ab9ece89cbeb4",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fccbbf49369445f70a482c85b55c078f9cadd67786a0a013fc6698b25100108c",
+ "chksum_sha256": "d80307c7fbf6fc328ebf0395601768f230c08d052cba3e459e4b1755635a2a21",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7a5e1d25df92ed1b5dca114c6cf36b26b24d049f0866014034597f9c44b1827e",
+ "chksum_sha256": "f41a107502fd7e4be2baf717aafa72bbafc34125fa229ec2e123f7dd7225176e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ebe78d90845598db5bbb9706a02725bbd5b4c78bc04e50afb888329367641945",
+ "chksum_sha256": "d9b1ee000ffc164233351430bc0f5f3c9d3a336fd09ef670bfa40a7e2eebafc3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d046da8c0e4dd08e6001b5d32c7acfea4dd2b005242bf7d11e0f89ead65f48f1",
+ "chksum_sha256": "306dedea01d094347dc69f10f2e68ed7787372ed087fa1c5ee2d5953a8767016",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5beb898fd85dd55c16543656a24d0f3cf81103d0b4a3b9ac5c0986a4f630e703",
+ "chksum_sha256": "e350806f21caa0181d510feb9cb4e70185286e62aa3b52719b59d55172f2126a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_enable_lldp.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "88bd2a8904ddb081f33df2ad15b7cad35f711c4ce1e32400d45b598f647484ab",
+ "chksum_sha256": "8cc9ea8d4a47459ec32d942855702c789ba3347e0693f57313003f45020d8a7a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/parsed.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b633b4d6ccef76001f6764713b498278bf30e1dd964673e556fab42166480786",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "9080f77ada9c677a1f4f275d42ed6bb0123286aa0ce5462bd2c580f47dda0d07",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_interfaces/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_ntp_global/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ntp_global/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5e606724f5e050623ada8c3ebac4a083abdd02767b5957a2a8904f043d62e05d",
+ "chksum_sha256": "99f97d7709529ad5a370ef88ca759dd566abc45940443dbe28762778ab40c544",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global",
+ "name": "tests/integration/targets/ios_static_routes",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/meta",
+ "name": "tests/integration/targets/ios_static_routes/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/meta/main.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "38d132ea3d937d0294148c6f3a04d55737b22d89d81da2b9a62d2f143db5c577",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/vars",
+ "name": "tests/integration/targets/ios_static_routes/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "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_bgp_global/vars/main.yaml",
+ "name": "tests/integration/targets/ios_static_routes/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9748f49b5ce9a99a9ebc47bf062708794d4c7cc7ca1fa2f887b8220f2f45bc52",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/defaults",
+ "name": "tests/integration/targets/ios_static_routes/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_static_routes/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests",
+ "name": "tests/integration/targets/ios_static_routes/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/_initial_setup_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "75c019721cd809896e681cc3826abf70eb2a7d0616bc09817577e99c02ef7070",
+ "chksum_sha256": "59e9f957b72ad03c69b153719c63dfa82fc76462044bf190464dd27e23b38ce8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/_add_extra_ipv6_data.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b28f32004005582bc80fbc2a9c8db6728687c25d87f74a365e61e7a20ec853d5",
+ "chksum_sha256": "27fca9065f41504020492968e54b2e06402c06e0125a486302d1917a63ac1f43",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cca6983e388a8e06b3b72325026c23d5794b130d45a74adb6d2156525ff8335d",
+ "chksum_sha256": "0283a6e9bffb601b04610bc3005eecafab4424e7adffc0cd92d5f2ec80854451",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9c08349fdc001cdd463151f85c7bf4a5973c2dff048f27ef2ced9c769535edfc",
+ "chksum_sha256": "a789e3b6c7198a508bf40cd4e3cb57e546cda7632199c859f9099f6fb88f0f95",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3c6b76253c2d8e53a0df8c1f620ad1b90d537912cb81877fff08d39689a1537f",
+ "chksum_sha256": "d94e463bdb85337d3eec7c13b3a6f08547817fcb70bacc4b842ffe40fe11c13f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "22e70effcb2a1b4e95a65356aeb5851b46cc61d518aa81ce133b7934eb8c6d83",
+ "chksum_sha256": "ab4fe0e6c364f83917063a0918a0cb632f8f9d26f6d4bca6c667e1e2e1181cd9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/purged.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/_remove_extra_ipv6_data.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "440e31a2f87615c703a8a25d436bebf5e076b729ab0316294b1aea01585fb9ae",
+ "chksum_sha256": "a6ceabecece292ded2c58a0da2f9f147af26de4c6428584afa2f0c456afc5061",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "87c9833d471a6b80a6c2cd0a14d29ef5b983fe7d8e9e61e6f43a8c0e1e8a89f6",
+ "chksum_sha256": "dcdb366f9c765b9c097f4c406703abd2c9a03a524a6eb1d19b352d93fa2deef2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cfa79d338f05e3971ce8a30e951a60e8a3898786fecbf125898bfc20275377a4",
+ "chksum_sha256": "923d1055671a7fc041e16e4b245f7b31451ccee290adc60cc145da9e23101c29",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5cbe172d53fbd26d8dc675b06a513f8e815008c6f263c8bfae14600cef46f964",
+ "chksum_sha256": "45bc3228d1228672490f41f89975c552acc03459b8d0879185ec00e9ae72e411",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b6479de2654937093427d57930e46c699ad3265ee6f67624b7414d03cd9888eb",
+ "chksum_sha256": "854a251b2b1da970c8de705b4a7d5605c18e2107d157feee9496805b811943a7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ac9b0f35b9607c4dcd6ee6fe8c4c5a3a890eb3ffef2606e5d9935648df7d5b7e",
+ "chksum_sha256": "c356f5c2db3137413b1235ce6ae54d6b2a5dc02f41074c65f2a0ba23370e3c38",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_static_routes/tests/cli/rendered.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e971b8839367066f0b190610a58229ed0599df3e17c4f97244b641a620b0e781",
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tasks/cli.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "name": "tests/integration/targets/ios_static_routes/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_bgp_global/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_static_routes/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3c1978dc1393f0ddade54f4568fbe2a213f323e71e9aa334266bad4fd016ea95",
+ "chksum_sha256": "9cbfbd72a07c59fa3718d4dd77eda9cfc144ecbd081561172b9cf09c5eeadf53",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans",
+ "name": "tests/integration/targets/ios_lldp_interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/meta",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/meta/main.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_vlans/vars",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "5e606724f5e050623ada8c3ebac4a083abdd02767b5957a2a8904f043d62e05d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/vars/main.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a9c4f92d6609f4553356daedfac83eb54159e47b6aad7f0ce7ebca70622d25c7",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/defaults",
+ "name": "tests/integration/targets/ios_lldp_interfaces/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7c3dead8718d5c971c74c59bf6c3eee8be63eb99fea05c03b0aba14e2994c4c4",
+ "chksum_sha256": "e44e3d1b77f9197ef4361d6dbf20eded541d03f581394845c3696a83e441f2ad",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9dcb409a302fb60386633c000240bd99c7e1a925e59d940604e6b1319d138eb8",
+ "chksum_sha256": "b9cdedfb409a6a585b41bbb846c76b74db84cecab5bdbfeef8886855f6cd1a51",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "85a1aebb72960e9ca957302e141f03debf96a1ab54926905a182b6f12fc2bb55",
+ "chksum_sha256": "4ae00f45065d40f19d7d616af65721f965809346dac870564a152f74da00bffa",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e7bc4328acfacc36056f4f9fd2ed9cebef987ba490730967a191721c62993aa5",
+ "chksum_sha256": "d046da8c0e4dd08e6001b5d32c7acfea4dd2b005242bf7d11e0f89ead65f48f1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2cee0574690e1a22ae1502659dbf76f95aa0f3adcc742e32a25241043c9eaa20",
+ "chksum_sha256": "c677840c5b24b7fbc56a54cbe609c24c198bf12cb1b9db9218316a45f9481211",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2d7773b3edea41259b34dbfefcc4c7a543c6ab3c1a1a2d85a334d0cefad37b91",
+ "chksum_sha256": "ebe78d90845598db5bbb9706a02725bbd5b4c78bc04e50afb888329367641945",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "19bfcf9b214bd48339bd025b2c044eb3a640bd46b88442f4dc5337faadc0e18c",
+ "chksum_sha256": "ca080f4e61b3ed9435f09d4ce2341f2851ab47817e80383ce5c329cb89216b8f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "31dcdedd876672aa1f15ac36c7b35b156cea9795b15f686e40b2eecaa0ea5392",
+ "chksum_sha256": "fccbbf49369445f70a482c85b55c078f9cadd67786a0a013fc6698b25100108c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d90eba79cf10b15a5318824e1fbc6e877db3951526be828180d47a3d1f8aeb03",
+ "chksum_sha256": "5beb898fd85dd55c16543656a24d0f3cf81103d0b4a3b9ac5c0986a4f630e703",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_enable_lldp.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "96631f083020ab2d55c8ad66ef70bf26942bf12da2864a3b45b8afb934e5c7d7",
+ "chksum_sha256": "88bd2a8904ddb081f33df2ad15b7cad35f711c4ce1e32400d45b598f647484ab",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4ffdb8c877c749e808b435c833c92f3b7d7343d05c4ba8d8f1b39e519b1b63a2",
+ "chksum_sha256": "7a5e1d25df92ed1b5dca114c6cf36b26b24d049f0866014034597f9c44b1827e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1b9940730019c5607914c500f4e39e23b55fe858a6d0b276c96a28e72f222049",
+ "chksum_sha256": "007a1de94220246c924b2d51649d632c2caee32e05fdb91f25df2e14e0e602e8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tasks",
+ "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/rendered.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "def5a49dd2014e2079ca9312f36b626f9bfe5606d255f306eec9dc700ae9f7a0",
+ "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_vlans/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_lldp_interfaces/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
+ "chksum_sha256": "887240ad30c1751c17e47be11a0cc78b5c323d442967b30457bba74054d6ada3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_vlans/tasks/main.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "8fa2acc83e477a128ac38edeec64fee41b19c60ee0c81a9c4fc633958a687a73",
+ "name": "tests/integration/targets/ios_facts",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_facts",
+ "name": "tests/integration/targets/ios_facts/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
+ "name": "tests/integration/targets/ios_facts/tasks/main.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "093a68ecff9678aad9ed8e47c822c8dd795b7f5b6a14493bbbfe1d67a378c324",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_facts/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/ios_facts/meta",
"ftype": "dir",
"chksum_type": null,
@@ -5559,13 +5916,6 @@
"format": 1
},
{
- "name": "tests/integration/targets/ios_facts/tests/cli/all_facts.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "9cf6cbc987d6ba7795203565628f8a75acc6cf5fba1945fb2a5614f06b359612",
- "format": 1
- },
- {
"name": "tests/integration/targets/ios_facts/tests/cli/default_facts.yaml",
"ftype": "file",
"chksum_type": "sha256",
@@ -5580,2474 +5930,2719 @@
"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": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_facts/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_facts/tests/cli/all_facts.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "093a68ecff9678aad9ed8e47c822c8dd795b7f5b6a14493bbbfe1d67a378c324",
+ "chksum_sha256": "c5dd6cf0f7fe495fd14458aafe778ec70adcec1013d6bfd57baed70599f98c90",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf",
+ "name": "tests/integration/targets/ios_lag_interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/meta",
+ "name": "tests/integration/targets/ios_lag_interfaces/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/meta/main.yml",
+ "name": "tests/integration/targets/ios_lag_interfaces/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "79c7a4587c7a00a2c7a91a5eab3b092671c730ab0c82458102614e087ae32030",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/vars",
+ "name": "tests/integration/targets/ios_lag_interfaces/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
+ "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_cliconf/vars/main.yaml",
+ "name": "tests/integration/targets/ios_lag_interfaces/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3de9b3530a2bce1c236f2ddc4b95f4282226d88b6212be4d1ff1fbc85d5c131f",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/defaults",
+ "name": "tests/integration/targets/ios_lag_interfaces/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/defaults/main.yml",
+ "name": "tests/integration/targets/ios_lag_interfaces/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/tests",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/tests/common",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/tests/common/_enable_archiving.yaml",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "63ff50f1f1f57a709881dd26a33223c2316775239e9fc21dfeff23adbaea7ebc",
+ "chksum_sha256": "d11cd0691705a44a06275d2438229562d70cb6eeafdfd7823c306fae55ab7974",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/tests/common/_cleanup.yaml",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5386a829c04704371984f8ce25e2c63213c131dd62775410cb26568d37e923a6",
+ "chksum_sha256": "9ae384d2d361bfec3e5ec8d4521923a328fd0a6b06ee0fad2dc813650f4867af",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/tests/common/commit_conf.yaml",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "86cde52806aad9c78253ffdb74022af60cb99ff51c80e04adbbfde1af72254cd",
+ "chksum_sha256": "4a3bf0d0d675271115fbfcb01d220b647d351ba511dff0d16d9f8d7468ce8ac6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/tests/common/_test_config.yaml",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c48a21095f6edaea997c25042855b8628c0ca7181366ee8488069286ab350873",
+ "chksum_sha256": "41fc0f1077783f0157b1bdae02da05009bd55cf31cfffdce93f25490569c7eaa",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_add_port_channels.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "37e0850a33908a4856f7167d6e488cbf3b6060950a032aae1f1006dae560d2aa",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2d3350be00fa2af0f217f369684578df724bcf9550402e7a54ef1b84f32dcb53",
+ "chksum_sha256": "45de9b52c7ab6864f1abd09fe743ffafdc10eb084285f98755c9ec21137e9bb0",
"format": 1
},
{
- "name": "tests/integration/targets/ios_cliconf/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822",
+ "chksum_sha256": "a9ef52fd6e4d52c3bdf173bf2d2c13f4ad7515dfd508f93e70d00f951cebc8d5",
"format": 1
},
{
- "name": "tests/integration/targets/prepare_ios_tests",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/overridden.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "dae7f6e33417854fdb686dc22ab25acf7ccd05b1cd088087f4b6777012ecd7c4",
"format": 1
},
{
- "name": "tests/integration/targets/prepare_ios_tests/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_parsed.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c30f577272b1c7bdc04fc0cf9a016b5c004a93f0e7d09cdb4bca3fa5aafeea8e",
"format": 1
},
{
- "name": "tests/integration/targets/prepare_ios_tests/meta/main.yaml",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "851860fe2ed1258710d7fcf89ac5b7d8c3c87755e89ca56fdd79bea022eb2b92",
+ "chksum_sha256": "af7be4e062acefec5cf61c6cc7ad3cb369db2b641ae00f229621ee62a47fe90e",
"format": 1
},
{
- "name": "tests/integration/targets/prepare_ios_tests/templates",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_populate_port_channel.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "18e91e2791fb6dd738d3042718436ae3244dbd0a90b5f1886ed5a5daf1d46ceb",
"format": 1
},
{
- "name": "tests/integration/targets/prepare_ios_tests/templates/config.j2",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a21d7b66f513ecb424fd6e23df9f0737c855281f3a5d0be6c856a0d2ce7af23b",
+ "chksum_sha256": "59d406ceef4165fcae86490c8251a719575a113ebe80cce578c1e4b67c974225",
"format": 1
},
{
- "name": "tests/integration/targets/prepare_ios_tests/tasks",
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/parsed.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "523ce08d67e26a55d5ae1004bdf73f5f785348437c918d98179f5bb01e403839",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/rendered.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0ce0f4b8f4ff19ca8202594612bfff8bbe94ce65867e3db6e3e9bde4354c4c16",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_lag_interfaces/vars",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/prepare_ios_tests/tasks/main.yml",
+ "name": "tests/integration/targets/ios_lag_interfaces/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "044df3cbbc253645266ad8c2a377e8758a8fd53c7a7398818eeb2fe0220e0a1f",
+ "chksum_sha256": "7548cef68905ad34af6e5c02e932c61e8eadc317b15831fca6346a128b89f7bb",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps",
+ "name": "tests/integration/targets/ios_acl_interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/meta",
+ "name": "tests/integration/targets/ios_acl_interfaces/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/meta/main.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_route_maps/vars",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "9a46304602c050830a04642d790e2c32e7ca38138a3115617a321b0aaa966ac9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/vars/main.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "707242064a446604688cfa42b04d777ff801846293ade1154dcb3e82a9badfb8",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/defaults",
+ "name": "tests/integration/targets/ios_acl_interfaces/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "85fea8de40eb500f7b93f6842ded059cc8f3e346d902a06028a4869db7e19b01",
+ "chksum_sha256": "3989e7f762cbbf518de2b3778ab60754ec12e403c145956777cbab0962368206",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3c56d9e9cfa1c23282710af3f23af288e856f3ff9134cc411a498b186c2df4c4",
+ "chksum_sha256": "26b38d39df6a806126bb1981ac16b20707118f8d4b4bf77036dd328705ed3b76",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b4046f281274bc9935c8cde1acc6b9be307f1b7ef9fb583957e1322b0c082d60",
+ "chksum_sha256": "b052384eec330f45bc81d36118752d8997371068252fc29e436bdb59391de045",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ac7be197d9f1c5d050d19763c77777eb76e358ee919bb8f9cbb9f9844dc88223",
+ "chksum_sha256": "5e5d0eebcdf9df91bd9427cda551ac2faa5b3c91559e742a18ce0eb59d0b5755",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9107ec621b5c648121c0917cd969eb12895ff1bbd5164798902d8fade0887608",
+ "chksum_sha256": "02c8c24f18a12ddb0ed2b7d21e39eac17a3c36787f8ff145223ca43af0c02e42",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "df41c3a26d7834ab66fdfe1b2faade9c312e8225c7bc99d736308371f3600ea2",
+ "chksum_sha256": "3077db7d9d462cc53d8a755d6ff91972855473a4303ea49862dd1c26b1345816",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d0f8053909d848db5a593451794962888efd2e041f710294929ca1bdde0caff8",
+ "chksum_sha256": "5f0b6df959031fc5ab1736f470d21d0d029f71711b916b666e8172e5af4be64b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ff7c6c2838c19016776a01f6d6704aada960e930a0829c0e47e847c70144b9f7",
+ "chksum_sha256": "25ed4323da59a62b27fbd759263f146585f660557ae20c810f4a00602a4584d1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9991663c3944fd60eb5c0dd904a88348ce7ebdb04550a3e596b92b67c312a8fc",
+ "chksum_sha256": "135c4a4d72895e789f33ef5d20039e4dd8a1ddb92402b8fd25cbed9d3cf993b6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7f164fe2b72297a0ed83c0dfde78abb1673ebf7715469c55d263904c54e75e8d",
+ "chksum_sha256": "3860df920e3f445383200f9261984c3a4bf72d7c93ad252ee8bb237fe2acc163",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "49d07d449a90342c4a3b2605f7d2e5a99c3c04952701ea4a1d8b29b02577fa49",
+ "chksum_sha256": "e5e5626f01eb1f6cd90237efc8972743f594500e8f3fcb34f8f0e6752069ab2c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/rendered.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "168cef1691a6a4585ce66751fe0e9520573ac71ffbe016a9a3f239b195b9a8e3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tasks/cli.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "name": "tests/integration/targets/ios_acl_interfaces/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_route_maps/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_acl_interfaces/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8e9a834620253664b73e74d67506006c5a301715f7b7a867c5bca4334f82ece7",
+ "chksum_sha256": "f860d0bfa1a178cc8f9426b3e865a1e8db7123ea9dbeed64494fb52dca4875c4",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname",
+ "name": "tests/integration/targets/ios_route_maps",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/meta",
+ "name": "tests/integration/targets/ios_route_maps/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/meta/main.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "8e9a834620253664b73e74d67506006c5a301715f7b7a867c5bca4334f82ece7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/vars",
+ "name": "tests/integration/targets/ios_route_maps/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_route_maps/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/vars/main.yaml",
+ "name": "tests/integration/targets/ios_route_maps/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "febb64d561f5a456e89d59fb77210502df86daa4eca07014b96993b76d0bc5ba",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/defaults",
+ "name": "tests/integration/targets/ios_route_maps/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_route_maps/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests",
+ "name": "tests/integration/targets/ios_route_maps/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6cd846336af90bbf055ebce81f350f2187733b3580f5c227b07ad766e6c4bf9f",
+ "chksum_sha256": "ac7be197d9f1c5d050d19763c77777eb76e358ee919bb8f9cbb9f9844dc88223",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e42472783ff99e3351a0a581b2ddcdaca689eb9cb8044af829d580473e17ac35",
+ "chksum_sha256": "b4046f281274bc9935c8cde1acc6b9be307f1b7ef9fb583957e1322b0c082d60",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5b7529ae69029b3e22b4dec95b722595deebe267cb2f2735a85fd53a4c82bac8",
+ "chksum_sha256": "df41c3a26d7834ab66fdfe1b2faade9c312e8225c7bc99d736308371f3600ea2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "070883e8b78940daa953461fd32520d1bef4bdf4cf98664b3e82c7d0fae842b6",
+ "chksum_sha256": "7f164fe2b72297a0ed83c0dfde78abb1673ebf7715469c55d263904c54e75e8d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0a18425a89f8e85573729e8c29b8c45e491dd6814b221f9d42a0acf0960689e8",
+ "chksum_sha256": "9991663c3944fd60eb5c0dd904a88348ce7ebdb04550a3e596b92b67c312a8fc",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "334a751e168137370f8d5baaae2c017e63cd9870191a2476633bdb33f5aec915",
+ "chksum_sha256": "9107ec621b5c648121c0917cd969eb12895ff1bbd5164798902d8fade0887608",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8f0c8602b6863de3c09c0f29fb3fbe83fc0afa94d1358db7cb974628c616ebc4",
+ "chksum_sha256": "d0f8053909d848db5a593451794962888efd2e041f710294929ca1bdde0caff8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9313132bb4ea08fdfebbd76b6376eda299d1e61fef0b62973309894399193613",
+ "chksum_sha256": "49d07d449a90342c4a3b2605f7d2e5a99c3c04952701ea4a1d8b29b02577fa49",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "909ad0ac69441e0c20405814bade15872ccc23e5b736632efcfd2880d863c6d7",
+ "chksum_sha256": "ff7c6c2838c19016776a01f6d6704aada960e930a0829c0e47e847c70144b9f7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/parsed.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3c56d9e9cfa1c23282710af3f23af288e856f3ff9134cc411a498b186c2df4c4",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_route_maps/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "85fea8de40eb500f7b93f6842ded059cc8f3e346d902a06028a4869db7e19b01",
"format": 1
},
{
- "name": "tests/integration/targets/ios_hostname/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_route_maps/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_route_maps/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9e463dfec9973774a7a87d75f8e492a829e08a207f7330616a23032087174429",
+ "chksum_sha256": "707242064a446604688cfa42b04d777ff801846293ade1154dcb3e82a9badfb8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke",
+ "name": "tests/integration/targets/ios_system",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/meta",
+ "name": "tests/integration/targets/ios_system/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/meta/main.yaml",
+ "name": "tests/integration/targets/ios_system/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_smoke/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "68e898ba92f5164ddc8cc51967c5e2876e9002699d528634a67f2183dd558d39",
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_system/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
+ "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/templates",
+ "name": "tests/integration/targets/ios_system/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/templates/defaults",
+ "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_smoke/templates/defaults/config.j2",
+ "name": "tests/integration/targets/ios_system/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c67459067166baed6059b02907fb2692e34868270185b09fcd9f5d7c3ec013d0",
+ "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/tests",
+ "name": "tests/integration/targets/ios_system/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/tests/cli",
+ "name": "tests/integration/targets/ios_system/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/tests/cli/common_config.yaml",
+ "name": "tests/integration/targets/ios_system/tests/cli/set_lookup_source.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3cadb8dae7de5b5be84fcab95fd6e5f65816069841a996010af41c32b8438897",
+ "chksum_sha256": "10e512f2cf5dc0fe7c9d3cb0188fc3dc96dffa68beb61895d88c8dc422c886e7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/tests/cli/caching.yaml",
+ "name": "tests/integration/targets/ios_system/tests/cli/set_domain_name.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "618ffe0e7bbd5a6d4e6172cdcca046317acbb06f8dc8b4de4e214fec6e642640",
+ "chksum_sha256": "4bc85f65fcaa284e9503fe5643f16111f14daf7ba677abd84daa04302f8b007d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/tests/cli/misc_tests.yaml",
+ "name": "tests/integration/targets/ios_system/tests/cli/set_name_servers.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7eb9e4e697c8432c1a40e9408f7638d887c347aec871bfa157bbd7c3f0586b95",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_smoke/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "b59e7228e155bfcbaa1863f12fbbdc641e01c2fdef2d6bd4f4aeb2f3fa96bddf",
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_system/tests/cli/set_domain_list.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6cdc2604047d999342d2e29f3a546b9f8ceab22e37c2d4eaed5fb596bd4cd2f0",
+ "chksum_sha256": "592210cc1bf19177523967179ec83b786b9c60d9341acdb087e739911876007b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_smoke/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_system/tests/cli/set_hostname.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7f9fa924aaef2895a7bc9899ba35028617be0e242888fd3558903a9a5c621bf2",
+ "chksum_sha256": "810d48f3ce471254c763859c7d33ad70b06aaa28b45712179b4794f3b5a667c5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3",
+ "name": "tests/integration/targets/ios_vxlan_vtep",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/meta",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/meta/main.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "7607c1041a822e911d328c572b5986636a52054bad2895b89c4beb7861755017",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/vars",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vxlan_vtep/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/vars/main.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5d9a640abfe561027b4afaadcf0306d9f52437a9ca11c8c6bd33aa39668cfc2b",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/defaults",
+ "name": "tests/integration/targets/ios_vxlan_vtep/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/rendered.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "21aabfd4dd00cabd0670087c3f46d8f3cf0dac51e013d14790546ec52612579c",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/_initial_vrf_setup.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7fb8dc743143aa6677f024b7333e02bb1f52f1a9c434cd86e1617b442dcc8a0b",
+ "chksum_sha256": "6e7e8c2edb74ee0476b0c4d83a52c84e4230c16e3c3d051c63c6fc63018c4211",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "616e7d9e3cc11d85aa6f6948a80ba8ad080df33b6fa2574e58ea96dda1b8b4d7",
+ "chksum_sha256": "5665b8e91a6bb98092632ca9952389b634005325762d970aa987bf0523ccc882",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8a735801dc4fc0769f2773722caa333ada8c5c41daad731c271c185ff1d6a040",
+ "chksum_sha256": "149f7e871cffbb37baa730d0dc0a4964723f90d64d0f0a409ebd923b743e682a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "844b1f73132324bcee3f3390fce22388df69b69e4266ffebbdd4c5d6a8a4c2e8",
+ "chksum_sha256": "9c7f20dee20d06af4441f5369836e86db1aba0bda93cb50caa49e6041ae98dba",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "238918c44b8752332fe7ee6df2e293a51da17252fdf2362b337e6a897cc224cc",
+ "chksum_sha256": "61c3a851e2d056cec1479981c331fd2a4c1126bb8bbacd5c38ed0b4e4ff026c0",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c8f73d52be036135d76b6157719db5f9bd4f7761ebeae5618e48a339ed14ae4e",
+ "chksum_sha256": "2dbca0fd8e9d00593a5785ab68cb246e21a2ac99fff6970ff150710c246f1927",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "72297b557d1b34d29b999d26e00a0b28d813fd1e458338acd1cd3b24b0a35aab",
+ "chksum_sha256": "c56eb808c76e38656a84bb5e725dc14af02482efdb85d2246613aff63e9b52cb",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "75178f12ee6688bc6635aafb6d83adddbed9b5a0d12fb9d39c819afa14adba64",
+ "chksum_sha256": "0b9a801456bd9db90925de5fb3ddf02130ebf6e4de5abbc8dd0a3d8785ade822",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_vlan_vrf_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "23df18165ce662f9a6837926a752e92d9c0500334a68492ae8607c2385b4cb29",
+ "chksum_sha256": "455e27f59263b50ef9ec28db7556b9746070f5672cabe83cb0c03f6103ca3918",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c70156e646606c78e8221d3f09140d0be29bfc307756e6f0993b02b78b8fe9e9",
+ "chksum_sha256": "7d54c5dd89c14a5b02575b8e80f647bc66ba075563571e876e5d471beca81c10",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2bfc27b217fab25508ee8dedb4819c40bdb98b3352c464065f8ef169622f4384",
+ "chksum_sha256": "67f3d6703dbc41fb80ddc9360a8fd99addc2dbd17258b2e3d4bfc859c604d867",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d825c44ce8c9cec4e8b41ce23a867b76e766c6e6a3491d6621585bce8bdd57c3",
+ "chksum_sha256": "23ba22f2eacb69c8cda7d4bc0b8ffb9b9b4e3c8c2499e8512fdd09ed136e051f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv3/tasks",
+ "name": "tests/integration/targets/ios_vxlan_vtep/vars",
"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": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_ospfv3/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_vxlan_vtep/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2ee4493aa601f74dca37f18dfebff80578f8ad47283d1921825a9036bae468ad",
+ "chksum_sha256": "7bbcfaab60d1b44f73192415eef696368496e56fecd0d5f6384a36f6ed0bf500",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls",
+ "name": "tests/integration/targets/ios_l2_interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/meta",
+ "name": "tests/integration/targets/ios_l2_interfaces/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/meta/main.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "0c72f070fd187ae7c13c368647de220f6b254ab856db38328f952f012461f480",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/vars",
+ "name": "tests/integration/targets/ios_l2_interfaces/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
+ "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_acls/vars/main.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4e3c9cc9da53136965c26f1a073b512d9173a42a4a3f3d8978cefe531d4a1e67",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/defaults",
+ "name": "tests/integration/targets/ios_l2_interfaces/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_remove_vlan_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "855485788ef3b774a156a6a7780597f2c73639a9da4f7093bfe3289ca1e67853",
+ "chksum_sha256": "89eb56e9a96ba32ab65009fc09ebf8bbbeb74843839557a70f1c76c3ba2f2c58",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a6cc930a39872ad57c5b74919747421b13b0a0c985100d70763b27d0f646d0f4",
+ "chksum_sha256": "e5c3d3a3d316de8d72b101a3200a8e81785710ef1f1386c0ea3dbf5da45eacda",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4aa123dc7a38645f48ca983339b0a43702f527b615514715a05689ddda18f592",
+ "chksum_sha256": "b04564f5e0e3b1f5527f25e60a42766131d47c8f14e5704c558156a2d901654c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2110fa4eadb1937613e4b408e6d87ec92dd2e55ea8d01b22a3f058fe670aed83",
+ "chksum_sha256": "ae60010ce6b859e677cd2fe0443293d0cbbfb6059f00416c2827998f8dba96c1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "42615f514256b1a7d451a57c904dafc5c7887df9bd1c968f5332b28b65ee999a",
+ "chksum_sha256": "2df68349950dac68eddcf5f1560371ca7d58868b3d5c978bb2047ec1d37a908e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ecf088fce17e2e3b5612311c4c10d551e1c0fc20716a2cba7f0424611b989fff",
+ "chksum_sha256": "094afbbdd9097ab670c41df21b081705791bd7efa1ff26a741ccd2f9a21ed2a5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "46fbc34461ca07fa76173803e47b59638be46b109cf3033e12ab8e741e66d203",
+ "chksum_sha256": "205a1557e675e86da5aa68c11e65648bc868852e81d2d483ffdacbd72e058181",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "deb8f9f04894eaa86e57fe73e9749c00ecff6d960e5b3268ea5e7ad12d895a5d",
+ "chksum_sha256": "8b4e94db711765525756701212c456abfea84fb4c38cb4cd45c9010dbad93927",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "22dff6930e31491a66e9b9f96b3adbb57e5619f9bb1cc04e699ad09651dfb23d",
+ "chksum_sha256": "18a86eba9dd5b79bedad92815399beb362a10c96e402b18fc70884852a2c502e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "aaf7849f1fc016f09813c37599fa2f567313c681920a349d3976117ca61033bf",
+ "chksum_sha256": "557b6eac4dd1d40678d52e9f59e84d8f9cddaf70a6be82787d43785fae35539a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9c3c4569c578ec8336fa353111482916a96d9b9f7ab0f3262e9fe3fb92ce0f1e",
+ "chksum_sha256": "91412f73bc4b57376bf22ae459899b858383999655c2365958695393758ff1ae",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7c7af067764f9e7823717d5b09d690789309bdb098c621a8886151cb7c5126f9",
+ "chksum_sha256": "aa8e71b9953a2d70da7fac058ba031f21cfb5bfb71df81285552b5aedb16328b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tasks",
+ "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/rendered.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "05a8a3246332f26b13525220bfb3ae2df1369eafe66f255ee76dc5d7d801fbd8",
+ "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_acls/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_l2_interfaces/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "c39e3586ef18b985c228717ae7eac1e306f5e77a15d450a24628cf72e2d7e0ab",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acls/tasks/main.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "a35279615971415b54c2877e35c58f430c4b5ecf79ab75cf8b1145408aa2f1c8",
+ "name": "tests/integration/targets/ios_vlans",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner",
+ "name": "tests/integration/targets/ios_vlans/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/meta",
+ "name": "tests/integration/targets/ios_vlans/tasks/main.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8fa2acc83e477a128ac38edeec64fee41b19c60ee0c81a9c4fc633958a687a73",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/meta/main.yml",
+ "name": "tests/integration/targets/ios_vlans/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/defaults",
+ "name": "tests/integration/targets/ios_vlans/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_vlans/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/tests",
+ "name": "tests/integration/targets/ios_vlans/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/tests/cli",
+ "name": "tests/integration/targets/ios_vlans/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/tests/cli/basic-no-login.yaml",
+ "name": "tests/integration/targets/ios_vlans/tests/cli/overridden_vlan_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3deefaccfe8f72086372732ab08319268107114dc4cf238dfef54e2974b29b26",
+ "chksum_sha256": "c2f157243c1f0874051f031c51813641fc2d08529e7d97971f10e15553acf3fe",
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/tests/cli/basic-login.yaml",
+ "name": "tests/integration/targets/ios_vlans/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "455be068cdb2741b681458831a33abbe656d86186a21d5dec3425add135dc14a",
+ "chksum_sha256": "2cee0574690e1a22ae1502659dbf76f95aa0f3adcc742e32a25241043c9eaa20",
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/tests/cli/basic-motd.yaml",
+ "name": "tests/integration/targets/ios_vlans/tests/cli/parsed_vlan_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2f9346d2348dd942748aa47f61b6aff3cf6e6ad48f94121546f09266930d371b",
+ "chksum_sha256": "babf6f1d0227a6f5013632fbe2c7ab70a01b1991bf1683a11bf9d60d23cff0cf",
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/tests/cli/multiple-login-exec.yaml",
+ "name": "tests/integration/targets/ios_vlans/tests/cli/merged_vlan_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4c2ad7f508adfa637bf8f80e8afb4c68eeb24061eb0e54b670cb020133a38f63",
+ "chksum_sha256": "1855d64d7d7700e8da4e69c4df727cdd37926f720867dcc87c05fc443b14ff99",
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_vlans/tests/cli/rendered_vlan_config.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "5bc3030e1201026ce580492c74f1762660e20ae6a9c6945972ecc0f65cf3a0dc",
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_vlans/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "chksum_sha256": "e7bc4328acfacc36056f4f9fd2ed9cebef987ba490730967a191721c62993aa5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_banner/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_vlans/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "eebaf78d8d30ccd861ee6d250aec3bc87871e249b6875f8b0f44a4a3fc828680",
+ "chksum_sha256": "19bfcf9b214bd48339bd025b2c044eb3a640bd46b88442f4dc5337faadc0e18c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2",
+ "name": "tests/integration/targets/ios_vlans/tests/cli/empty_config.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4ffdb8c877c749e808b435c833c92f3b7d7343d05c4ba8d8f1b39e519b1b63a2",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/_parsed_vlan_config.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "5921afbe0954f8ced2a95ceba0ffe19b6d3e0b31e50dae387704727e4602aa50",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/_populate_config_vlan_config.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d96a7d3e3bfe8da463bf2dd734b70aa86db1e98fa4307435ef430e0574a732dd",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/_remove_config_vlan_config.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f50d841acb552a2397492892efa62ca868a227651d2cdb2179a4bd3da66c9817",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/rtt.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "85a1aebb72960e9ca957302e141f03debf96a1ab54926905a182b6f12fc2bb55",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/merged.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "96631f083020ab2d55c8ad66ef70bf26942bf12da2864a3b45b8afb934e5c7d7",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/gathered_vlan_config.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4c50c17d5cc8d365e9df2d11698f67bd0a6f8650dcb2b3c7cdbc2bbd0ce82e58",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/overridden.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2d7773b3edea41259b34dbfefcc4c7a543c6ab3c1a1a2d85a334d0cefad37b91",
+ "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/deleted_vlan_config.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "56e174577879e139ac99b46f2588b9c101e1667faf4fd9ae1b59cab9466979d9",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/_populate_config.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1b9940730019c5607914c500f4e39e23b55fe858a6d0b276c96a28e72f222049",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/replaced.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d90eba79cf10b15a5318824e1fbc6e877db3951526be828180d47a3d1f8aeb03",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/parsed.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9dcb409a302fb60386633c000240bd99c7e1a925e59d940604e6b1319d138eb8",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/tests/cli/rendered.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7c3dead8718d5c971c74c59bf6c3eee8be63eb99fea05c03b0aba14e2994c4c4",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_vlans/vars",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/meta",
+ "name": "tests/integration/targets/ios_vlans/vars/main.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1cade52f40e5745ea62114c4c0c970e7f03db0578670180c7ddbd4d968a0ebf1",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ospf_interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/meta/main.yaml",
+ "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/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "3ca85e538cabf8bda1ebd32dee2b5803e8e171ce955d7affe2f1417283cd92d6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/vars",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "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_ospfv2/vars/main.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fd14404c1d656a5d3b5799c224ae52331ecec92f00eb7bf53b862035785aa602",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/defaults",
+ "name": "tests/integration/targets/ios_ospf_interfaces/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3c2988c367bd38b6fc431b3184c661086ae4bab311882e80c941cae6db04344c",
+ "chksum_sha256": "c6645517abeb9ff0bea3331bc844b12c1382b0eea4178be0dfa523a3a38c5a97",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/_initial_vrf_setup.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "76d392de6e1781864cdc0640af15493377ffd9a7a281e3c791ad1f85de2f537b",
+ "chksum_sha256": "338693405501e01ca57d2ddeb40f482891c029a986864fc98946fc266265bf13",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e36682d7d591a6ebd1311a1b34bfbeb402c35f98f14f9d9521a9839f1a5fc081",
+ "chksum_sha256": "4395e95e40e7a0dfcf80e05ade1c443c37cfe70fe80fc4fdcfc0ee48ca7bca7b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "884a85c89ac71989ae1247013438d457bdea02b7e7eee1adecb34759f1f8d44f",
+ "chksum_sha256": "fd72a9b920445f668d61b31646621e0f9587851e61eaaa071f8034468e3fab43",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fcfa39efe63ec56350bd75b0b4ded134aa99c4f1a810039fcf0744eed952a0fd",
+ "chksum_sha256": "c0c23c50849c89a60cce7588ee594c9f12fc89ae710516e3371d9cdf23bbdfbc",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "be91779003c353db09835a7ade40aa7e16311e93c3a111335d4caea13b27c3a4",
+ "chksum_sha256": "7ef2eb2c6dd20e38ac7f6058ced2a4902a838cfb902e8a32e33fc83bc8ffca5a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "80f3aebd2c1304e0c213724012bcc4b423cce6d732052d5cadbf9b2eb32c72a0",
+ "chksum_sha256": "3d05e7ad3cd69bd4b423def7c76b0200ec3daff4ce28f945cf1b53a001c52d95",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8554a710fa447dcbe0f7f0097a0f81b7129deecd19b5f4f6caafaf80bef690f8",
+ "chksum_sha256": "adda4ccbcef419623366dff6fd814799b732583587c8b71b9a49638079cf4c7d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d40f2c5cb855db5567d8c30a8d6525eb05a6b420f1293697dded7caa77e16936",
+ "chksum_sha256": "e822477d57a3e430f8e379be1528039e6e4ee5eff278141cdc2c3f5c4ea4ad1b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_initial_ipv6_setup.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5c14a242d083c840ecc52527cd1e732b34aa737a6a21be0a1df635874b92aa2a",
+ "chksum_sha256": "8a2472a61a85371edf42157eb38de6446a90882922de4471337054194b698dff",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8b2c2cdd0b7eba498612e6ba2f9cd2c46c2a120ff8061a24221500b2888d1ace",
+ "chksum_sha256": "843a2bd9f2693a11e665a5f552e9de54fcc379ca3e06ee80ba2530f9077acede",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b2013ced0c8268e36db6925558607e68fddb5887092aa3d520a2b6e1318fc7fb",
+ "chksum_sha256": "ff7d15cb956c6a22c1687aee06920653392f08ff0e53223afbab89ad7c7c98a9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e1995543982bd7f2a4aee73e5a9fce445b21af1d6ffb5f410d34b372dcd904ae",
+ "chksum_sha256": "f097e25e0459371162a4d0d2b645ae9ca361ad5d7fce778cab8793d7bcd2f433",
"format": 1
},
{
- "name": "tests/integration/targets/ios_ospfv2/tasks",
+ "name": "tests/integration/targets/ios_ospf_interfaces/vars",
"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": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_ospfv2/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_ospf_interfaces/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bf9e0e41402b83f7506fedba9515bd73a0fef00d77e63f09f9b2eda0ee5c3754",
+ "chksum_sha256": "d904ba1b1ee67876b5c1db5e8a2c063c500c99af83e05fd36d7584745f906957",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global",
+ "name": "tests/integration/targets/ios_user",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/meta",
+ "name": "tests/integration/targets/ios_user/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/meta/main.yaml",
+ "name": "tests/integration/targets/ios_user/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "a8da0d0bc00401711103caf4be61022ba74b53c8296bfcd784db7ea4853111c5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/aliases",
+ "name": "tests/integration/targets/ios_user/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9b121bba6a0892e8ff599846aa1ea5c388ae3c8a9e6a85192f43b89cf992719f",
+ "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/vars",
+ "name": "tests/integration/targets/ios_user/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/vars/main.yaml",
+ "name": "tests/integration/targets/ios_user/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1ec7b6b36ce360d258939c3b6b1e6679713dd2ffacd4bf6565d5c1b5391179dd",
+ "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/defaults",
+ "name": "tests/integration/targets/ios_user/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_user/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
+ "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tests",
+ "name": "tests/integration/targets/ios_user/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tests/cli",
+ "name": "tests/integration/targets/ios_user/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/rendered.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "511dd52c567ab5523749431d68ff8477640d6163210157e3a369ecb806e22ee9",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/parsed.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "a4ad1680c84aa5f112a608b29bdf2d1191092b3ad2648bb23ed9e30abe4cac8e",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/deleted.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "8216a30d2b32742967f308a76000f8399ecd0578dd3117815dbb787313fec7bb",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/_remove_config.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "f87546f50552f4a1138c7e95bdabd94215875db8393b6b709fac6727aaf5ad34",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_user/tests/cli/auth.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "67a19cc6b13772b6ef2c936eb3557dd877975467984a5d0532d83c6bd0c1a3c8",
+ "chksum_sha256": "1f1317bad114d20ffe0ec55fcda33969a2575dc965be99b58cefda6742beaebe",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_user/tests/cli/basic.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fa62f56bdeb326038faf1749f87ace988044890f29ab9c65865c4c54537a9517",
+ "chksum_sha256": "acbe615c9d6ee6c43971ed6986a31ed4e769c623d8f91f2258bbfb2255f76361",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/replaced.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "823669670f811bb65eb885121e0081a4072bcb061616296e3898a2f6ade10672",
+ "name": "tests/integration/targets/ios_user/files",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_user/files/test_rsa.pub",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "676cecaa97263ace6d06824911abc2333a5ed828c5309a4333652f820ad1b28e",
+ "chksum_sha256": "4552b1d9416ac1be7c90b10b182a6ff4a4c56efcba53bb31851808c5d1fd787c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_user/files/test_rsa",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5495fe14050f0ab0b992284137587d261bb57260ba22d2570f2e180b52fa644a",
+ "chksum_sha256": "660b96e5ac6d6bd17900490c4749ff3a63898bb155db0a661fefbd6ac6f0fc44",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tests/cli/_populate_config.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "7d38b25ae4e94caa126b9d4f02ffabb4adc05c8c73a3b58b0ae9ae4622ac28b4",
+ "name": "tests/integration/targets/ios_evpn_evi",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tasks",
+ "name": "tests/integration/targets/ios_evpn_evi/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "ef3434585fe8063da82d4d92c7cb20198bb9cb86fe82d49b0e8eba3fc398f561",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp_global/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d8347b048452c2aaf4b7f2315982f603d6955161adbd96ae61527b9fc9b4fcd2",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_acl_interfaces",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/vars",
+ "name": "tests/integration/targets/ios_evpn_evi/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/vars/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f860d0bfa1a178cc8f9426b3e865a1e8db7123ea9dbeed64494fb52dca4875c4",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/defaults",
+ "name": "tests/integration/targets/ios_evpn_evi/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests",
+ "name": "tests/integration/targets/ios_evpn_evi/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "168cef1691a6a4585ce66751fe0e9520573ac71ffbe016a9a3f239b195b9a8e3",
+ "chksum_sha256": "c8a64e95f6b485fa79daf39dd1f5c2e160ced25717df889d6c63f6054a227673",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e5e5626f01eb1f6cd90237efc8972743f594500e8f3fcb34f8f0e6752069ab2c",
+ "chksum_sha256": "0a5f817b301780f98b42b3ff17ee875ec1da8cec84cc5196cf2e87eab9ecb05b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "02c8c24f18a12ddb0ed2b7d21e39eac17a3c36787f8ff145223ca43af0c02e42",
+ "chksum_sha256": "d6115bc64148a4cb99bde23fb20e1b7d90cb8e08a826d1ce988b56d1aa56f959",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "26b38d39df6a806126bb1981ac16b20707118f8d4b4bf77036dd328705ed3b76",
+ "chksum_sha256": "0b5dffe39805b32781c56cf69f5dd7cb5102da1dd53eaa29f011001e009ecb83",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3989e7f762cbbf518de2b3778ab60754ec12e403c145956777cbab0962368206",
+ "chksum_sha256": "4244b8eb838cb04aa475d98824e7a4f314f6ad599111c8523185cf346b2074e3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5f0b6df959031fc5ab1736f470d21d0d029f71711b916b666e8172e5af4be64b",
+ "chksum_sha256": "58d8e5d48d73a1c2b302830fc55a50f3c53e60f612a2e20f0debee651a912062",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b052384eec330f45bc81d36118752d8997371068252fc29e436bdb59391de045",
+ "chksum_sha256": "7fc6dd9b2d30b6cb5e0785ee409ed4afc0ba34e469fe18e024bd003985a38b65",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "25ed4323da59a62b27fbd759263f146585f660557ae20c810f4a00602a4584d1",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/replaced.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "3860df920e3f445383200f9261984c3a4bf72d7c93ad252ee8bb237fe2acc163",
+ "chksum_sha256": "78274255f88531ce6799143d0f15f9dcc4d350c92ad3d792cc49a8b8ed5e45e7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3077db7d9d462cc53d8a755d6ff91972855473a4303ea49862dd1c26b1345816",
+ "chksum_sha256": "39b3e0b71234dc27e4baf2b26606120f452be06e624dfd6242133ad5d49a13cf",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5e5d0eebcdf9df91bd9427cda551ac2faa5b3c91559e742a18ce0eb59d0b5755",
+ "chksum_sha256": "f152c59eea19452042fd7fd86a18ec51a8ba501b488f2a104e81e7a4099fa617",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "135c4a4d72895e789f33ef5d20039e4dd8a1ddb92402b8fd25cbed9d3cf993b6",
+ "chksum_sha256": "d2729d3bd7841494cddd0732bd7a9c75663bb18eeba552161426cd88ede87611",
"format": 1
},
{
- "name": "tests/integration/targets/ios_acl_interfaces/tasks",
+ "name": "tests/integration/targets/ios_evpn_evi/vars",
"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": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_acl_interfaces/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_evpn_evi/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a46304602c050830a04642d790e2c32e7ca38138a3115617a321b0aaa966ac9",
+ "chksum_sha256": "d8d4519b069cabc7f791adda0fc239b41ce354dd4eccb8f1929e2503910fa16d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces",
+ "name": "tests/integration/targets/ios_bgp_address_family",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/meta",
+ "name": "tests/integration/targets/ios_bgp_address_family/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/meta/main.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "af949d2e120137280e403535d60cb3485ba4baa88a48d465d066d2151defacff",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/vars",
+ "name": "tests/integration/targets/ios_bgp_address_family/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_bgp_address_family/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/vars/main.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f8580c8328ba4d89ff30e52f044cc1c5c813a55e9234c9f722f655cc3f06fe56",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/defaults",
+ "name": "tests/integration/targets/ios_bgp_address_family/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c9f8c4f20831746975e125b2813af5a924c6ec65692e3b373b62cca70e07bac7",
+ "chksum_sha256": "46c2410786bf0f78b7645d8a6bf4dda5825d8949e13851505d83e30277257877",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_ospf_proc_setup.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c3aa08c205d7535bccd127dd4f2561e51a2ec026d151af29a27161cce05fc3fb",
+ "chksum_sha256": "a4b82d41f2e4894c7d11e847a8e436b9e29fee5159acc72269f651697a7f62da",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8de2097894aadebd181dd7ae7d0f5dec4cb017ff95010899b37d3bcad6bd0860",
+ "chksum_sha256": "8dc8ef4a203fd9de24d4afe860f25acd653f1f3512c445be6aec069b6bf4b22a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7d6150da669c91be1f6470c7441e2bbac682c7b78c59eb2bccd837230b68e2d8",
+ "chksum_sha256": "537c4819a15fc7842de8cad0e8b74745f2c5b57d98db904078c9d8316b71ba12",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b5f19e8e25cc5e2704ded61eb61d7ee0095acc136e1380809cdf47f12d8bbf17",
+ "chksum_sha256": "f3c31ce095304e438dfe658c12a1f429d9ff8764217ab52bd3dba99e0dbb8e99",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_initial_vrf_setup.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "37d322a0d70e5051c2f54be098c6cb7261c5cba19d030d69c87c9a25d05b3a2e",
+ "chksum_sha256": "f7bfcd11a8eba0c26e564d5b5600060584998da25484e8e92443c602067f72db",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3830de884a4d8a13874f4bb664a6dfe92240148a26f2414fd430051e40752b1f",
+ "chksum_sha256": "109f26ef884c25ffda307c25bf4180ebbb0c6a18b73e2509ade840be68f641c6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "49b157678ba5cc812ab3a5344bc492003e8cb6b1f849ae168b81f48ebba8ff83",
+ "chksum_sha256": "6447bcd80411c1d8f04d26582c2ab5dfef6ced7cd2be9a0681e609601bfe27e1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "53f65521e577ff3599a2a4d6e42bf504cf799976492d828573ca6239e9d41238",
+ "chksum_sha256": "d6cba5ef4746373c30e85d18fdf83be09ad50d9ee4c312a64422d34cb325e4a8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "191fc3bbaf3d78756bb2ce23765cebb199b569f0f7b88689063d00ee049db9ec",
+ "chksum_sha256": "6a2278af99b3d7b657b496333d700467810c0298ddaa567040b56c173f473182",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ef6bdcebaf77721c230b529ea6d8930afd19840ad644b09d7a9d9e8b08042a64",
+ "chksum_sha256": "ed4186a91d1cb41e8d7d24196821f6a055801eba77fc72c59af07eabb43f25b4",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/parsed.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4d452abe349d6f966fb7db5133c3039ff9ce202d6b98a16a157f405d7a6f1ce3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "e7aa25fcb776c99a3453c4929c00250575ca72bce253914a95fd21d769fb1f21",
"format": 1
},
{
- "name": "tests/integration/targets/ios_interfaces/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_bgp_address_family/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_bgp_address_family/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c8f9dc60a371baf0f3c770c2818e2feae840331bbf85a9c23ba3d2cfdfe13547",
+ "chksum_sha256": "98104bf0b72b20bb2d54f132858264e8c8aa8ee26d19ec82834d92367f5e0654",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces",
+ "name": "tests/integration/targets/ios_interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/meta",
+ "name": "tests/integration/targets/ios_interfaces/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/meta/main.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "c8f9dc60a371baf0f3c770c2818e2feae840331bbf85a9c23ba3d2cfdfe13547",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/vars",
+ "name": "tests/integration/targets/ios_interfaces/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_interfaces/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/vars/main.yaml",
+ "name": "tests/integration/targets/ios_interfaces/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7548cef68905ad34af6e5c02e932c61e8eadc317b15831fca6346a128b89f7bb",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/defaults",
+ "name": "tests/integration/targets/ios_interfaces/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_interfaces/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests",
+ "name": "tests/integration/targets/ios_interfaces/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/rendered.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "0ce0f4b8f4ff19ca8202594612bfff8bbe94ce65867e3db6e3e9bde4354c4c16",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_populate_port_channel.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "18e91e2791fb6dd738d3042718436ae3244dbd0a90b5f1886ed5a5daf1d46ceb",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/parsed.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "523ce08d67e26a55d5ae1004bdf73f5f785348437c918d98179f5bb01e403839",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "45de9b52c7ab6864f1abd09fe743ffafdc10eb084285f98755c9ec21137e9bb0",
+ "chksum_sha256": "7d6150da669c91be1f6470c7441e2bbac682c7b78c59eb2bccd837230b68e2d8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9ae384d2d361bfec3e5ec8d4521923a328fd0a6b06ee0fad2dc813650f4867af",
+ "chksum_sha256": "8de2097894aadebd181dd7ae7d0f5dec4cb017ff95010899b37d3bcad6bd0860",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d11cd0691705a44a06275d2438229562d70cb6eeafdfd7823c306fae55ab7974",
+ "chksum_sha256": "37d322a0d70e5051c2f54be098c6cb7261c5cba19d030d69c87c9a25d05b3a2e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dae7f6e33417854fdb686dc22ab25acf7ccd05b1cd088087f4b6777012ecd7c4",
+ "chksum_sha256": "191fc3bbaf3d78756bb2ce23765cebb199b569f0f7b88689063d00ee049db9ec",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4a3bf0d0d675271115fbfcb01d220b647d351ba511dff0d16d9f8d7468ce8ac6",
+ "chksum_sha256": "53f65521e577ff3599a2a4d6e42bf504cf799976492d828573ca6239e9d41238",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c30f577272b1c7bdc04fc0cf9a016b5c004a93f0e7d09cdb4bca3fa5aafeea8e",
+ "chksum_sha256": "b5f19e8e25cc5e2704ded61eb61d7ee0095acc136e1380809cdf47f12d8bbf17",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "59d406ceef4165fcae86490c8251a719575a113ebe80cce578c1e4b67c974225",
+ "chksum_sha256": "3830de884a4d8a13874f4bb664a6dfe92240148a26f2414fd430051e40752b1f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a9ef52fd6e4d52c3bdf173bf2d2c13f4ad7515dfd508f93e70d00f951cebc8d5",
+ "chksum_sha256": "ef6bdcebaf77721c230b529ea6d8930afd19840ad644b09d7a9d9e8b08042a64",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "41fc0f1077783f0157b1bdae02da05009bd55cf31cfffdce93f25490569c7eaa",
+ "chksum_sha256": "49b157678ba5cc812ab3a5344bc492003e8cb6b1f849ae168b81f48ebba8ff83",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_add_port_channels.yml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "37e0850a33908a4856f7167d6e488cbf3b6060950a032aae1f1006dae560d2aa",
+ "chksum_sha256": "c3aa08c205d7535bccd127dd4f2561e51a2ec026d151af29a27161cce05fc3fb",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_interfaces/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "af7be4e062acefec5cf61c6cc7ad3cb369db2b641ae00f229621ee62a47fe90e",
+ "chksum_sha256": "c9f8c4f20831746975e125b2813af5a924c6ec65692e3b373b62cca70e07bac7",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lag_interfaces/tasks",
+ "name": "tests/integration/targets/ios_interfaces/vars",
"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": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_lag_interfaces/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_interfaces/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "79c7a4587c7a00a2c7a91a5eab3b092671c730ab0c82458102614e087ae32030",
+ "chksum_sha256": "f8580c8328ba4d89ff30e52f044cc1c5c813a55e9234c9f722f655cc3f06fe56",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes",
+ "name": "tests/integration/targets/ios_prefix_lists",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/meta",
+ "name": "tests/integration/targets/ios_prefix_lists/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/meta/main.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "8fe724448a906aa2a584f11792118430e87edaab920e85f9f8042786edd08daa",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/vars",
+ "name": "tests/integration/targets/ios_prefix_lists/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_prefix_lists/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/vars/main.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9cbfbd72a07c59fa3718d4dd77eda9cfc144ecbd081561172b9cf09c5eeadf53",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/defaults",
+ "name": "tests/integration/targets/ios_prefix_lists/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests",
+ "name": "tests/integration/targets/ios_prefix_lists/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e971b8839367066f0b190610a58229ed0599df3e17c4f97244b641a620b0e781",
+ "chksum_sha256": "db20920f776718e96e3c251c29423c0a28ac5000c6454f49943f65ac20fae7d8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/rtt.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dcdb366f9c765b9c097f4c406703abd2c9a03a524a6eb1d19b352d93fa2deef2",
+ "chksum_sha256": "0c4dfbbfd610bc72cc634465a0668fa3daabd76ab0771a293c38e366a32a6842",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a789e3b6c7198a508bf40cd4e3cb57e546cda7632199c859f9099f6fb88f0f95",
+ "chksum_sha256": "93cc5c3bd91b11ab509b884e143d023a851d0046e2118d1fc2eb22ae074d2d58",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0283a6e9bffb601b04610bc3005eecafab4424e7adffc0cd92d5f2ec80854451",
+ "chksum_sha256": "1baa1acb44f8c05b1081b7d2d49d7d679a694b1eef20d63cf8b7eb33df4a441d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "45bc3228d1228672490f41f89975c552acc03459b8d0879185ec00e9ae72e411",
+ "chksum_sha256": "c1842105d82cd689ea4cea57e9f151bca2e845204e00c78142b60cdac10b401f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d94e463bdb85337d3eec7c13b3a6f08547817fcb70bacc4b842ffe40fe11c13f",
+ "chksum_sha256": "3718ece1e147c8f7a40932aeea280095591c481deeb46038cd3b070377d5f66f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c356f5c2db3137413b1235ce6ae54d6b2a5dc02f41074c65f2a0ba23370e3c38",
+ "chksum_sha256": "dc8a935708bb8e0b18381fb2cbd56f7bd389aa02255d0b5cbfe36a5b633b1bf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "923d1055671a7fc041e16e4b245f7b31451ccee290adc60cc145da9e23101c29",
+ "chksum_sha256": "f1b300e29142c3cb1fa9e84e476577e0909a1f5e13c9f6bae1036eb2f021402f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ab4fe0e6c364f83917063a0918a0cb632f8f9d26f6d4bca6c667e1e2e1181cd9",
+ "chksum_sha256": "97081ebf559f11a3701d87bc521f3d05be7a8a62a454d7f37194f651ccb053ab",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/_initial_setup_config.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "59e9f957b72ad03c69b153719c63dfa82fc76462044bf190464dd27e23b38ce8",
+ "chksum_sha256": "10d8202df57a09927329626e4b89a45038167e54d9e9fbc4c6c6ade64129fff5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "854a251b2b1da970c8de705b4a7d5605c18e2107d157feee9496805b811943a7",
+ "chksum_sha256": "92341a0e0de58ed85e0e12651de37e00217256797d83723f5bf31f5a62ed8b10",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/_remove_extra_ipv6_data.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "a6ceabecece292ded2c58a0da2f9f147af26de4c6428584afa2f0c456afc5061",
+ "name": "tests/integration/targets/ios_prefix_lists/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tests/cli/_add_extra_ipv6_data.yaml",
+ "name": "tests/integration/targets/ios_prefix_lists/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "27fca9065f41504020492968e54b2e06402c06e0125a486302d1917a63ac1f43",
+ "chksum_sha256": "54b02bf40251a3fd868d5c54f4cfa4eab85e5990b956a037f336c6814eeb19ea",
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tasks",
+ "name": "tests/integration/targets/ios_l3_interfaces",
"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": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "name": "tests/integration/targets/ios_l3_interfaces/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_static_routes/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "38d132ea3d937d0294148c6f3a04d55737b22d89d81da2b9a62d2f143db5c577",
+ "chksum_sha256": "daa688f229d7e8db61d23cc61ebc79ccff40a6e9af6de742f4cf5fde2fab74be",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_l3_interfaces/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/meta",
+ "name": "tests/integration/targets/ios_l3_interfaces/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/meta/main.yml",
+ "name": "tests/integration/targets/ios_l3_interfaces/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/defaults",
+ "name": "tests/integration/targets/ios_l3_interfaces/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tests",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tests/cli",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tests/cli/invalid.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a5de37d3a4e9c0a0deb381515d7aad38814e2573570881499c2f37d01c33148",
+ "chksum_sha256": "4ed4649e2c9b10b71a7ae63117d06ec134eae6b2182f26bb8b04eb911e609707",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tests/cli/bad_operator.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "114c1244968981a22617d661fe4e9de4734037af8970bce9b0c5b79102f8ae6e",
+ "chksum_sha256": "77cc14435d04e3f72f0ab9457713fca28de7a508c865c08df619ce999d7ace03",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tests/cli/contains.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ac41c0332715a477675065b303c059029f452524c9613bfa6837221b3c8a4748",
+ "chksum_sha256": "030195c5574fcaa46ade5d2d9f640d1b1668c41025f0c78032cdebd9ebc4ef86",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tests/cli/timeout.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "99999a86b0c912cd067669a525d1e0032db4e19aac5fedec7593bfc8868ae37b",
+ "chksum_sha256": "9c065775b6484b284e03beb65d1e250361c09fa4fc20e5006058f69e7c4eebc5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tests/cli/output.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "90067084bae011b7afc19fc1569700cf0007d29ae86d423be0111fbdb7d9bf8d",
+ "chksum_sha256": "e3ccde47cab8fd1f7d6eb91c8a1744831097c27bebbf655e15d71fd2456db7f2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tests/cli/cli_command.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "765a06846e98c1bc59b769855ba3c28f6ed2b7f8301b1aef0b8f0a9a4aef4863",
+ "chksum_sha256": "4ce15cb1c54d6ba216f276f2622dca7eddceeda339ae1b775c4e82ed0eca5ae6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tests/cli/error_regex.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d5a7048b1ee8dcf5c2ffb206c6f3284dc33972bcd1cb11ae2e8d2e765458fc9b",
+ "chksum_sha256": "d2a2840acaf208fa439d00dd3be862789bb3e249ca568c9e3a0f958ce4c92987",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/_parsed.cfg",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "74906256718324f2c376a9dcb3be7bbadb2487067b1617e6d90c16f0a109cfcd",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "chksum_sha256": "5a8e64e20ebea7d3a898216c6e256a3c0dccfcfb68a0671e3bf160e1f6c1b935",
"format": 1
},
{
- "name": "tests/integration/targets/ios_command/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cbea343b9422e831a52eac293e12796cebaba8432a2a7c3ea24f3d7cfde98a01",
+ "chksum_sha256": "9ecda90386ebc75e0cb6e8a820a5c4bf172d4ca7bd4dbe399a4733aa6c08d07e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global",
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/parsed.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "bfc3c984e0da8a8065696a6a4801d945bfaed1f84146f7c3c9745ba4468d0e1d",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/rendered.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ade890c5c428f4f2ada261b01e89f9149d27d8add293430df56161249cf0f6b2",
+ "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_logging_global/meta",
+ "name": "tests/integration/targets/ios_l3_interfaces/vars/main.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4e225d3253a22e2f0eba465f6fff8324396a02ace3d628e848b7a909af026064",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_lldp_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/meta/main.yaml",
+ "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/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
+ "chksum_sha256": "d8347b048452c2aaf4b7f2315982f603d6955161adbd96ae61527b9fc9b4fcd2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/vars",
+ "name": "tests/integration/targets/ios_lldp_global/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "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_logging_global/vars/main.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "54432abdc418154d2bc2d0a75a1a26d387c2ef5cc217cdcd6ddeb6cc19bc9ad5",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/defaults",
+ "name": "tests/integration/targets/ios_lldp_global/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests",
+ "name": "tests/integration/targets/ios_lldp_global/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/rendered.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d8b45e3678e544bb5e707a93e1155402218b01bb88ba710417db77102a7bb634",
+ "chksum_sha256": "f87546f50552f4a1138c7e95bdabd94215875db8393b6b709fac6727aaf5ad34",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/parsed.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6752b5ded2fc4b5361215ef8163a1ac17f48da2d1a26796414a2f7d7d4aab1f3",
+ "chksum_sha256": "8216a30d2b32742967f308a76000f8399ecd0578dd3117815dbb787313fec7bb",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/deleted.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f3e928753667b5b4738e0dd33b0f903295ad29d82c32a9326211c613ce0717b4",
+ "chksum_sha256": "67a19cc6b13772b6ef2c936eb3557dd877975467984a5d0532d83c6bd0c1a3c8",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/_remove_config.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d3b22fb7585f08098afcf881010b4d9348529e0f722c139b763f6b0c158965d9",
+ "chksum_sha256": "5495fe14050f0ab0b992284137587d261bb57260ba22d2570f2e180b52fa644a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/overridden.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "09a264fcae252de2ac6ee85b8af26b74cc369cb29dc450cb21eb209818796182",
+ "chksum_sha256": "676cecaa97263ace6d06824911abc2333a5ed828c5309a4333652f820ad1b28e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/gathered.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f808045f76ecfd2f709fb9a4af7907660e8dfb4efa55fefc3744c32da9c20bf9",
+ "chksum_sha256": "fa62f56bdeb326038faf1749f87ace988044890f29ab9c65865c4c54537a9517",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/_parsed.cfg",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2ecf2a5261b5c148d8c8142586318132ac92fd1663b20e91a2504ca2c2f9596c",
+ "chksum_sha256": "7d38b25ae4e94caa126b9d4f02ffabb4adc05c8c73a3b58b0ae9ae4622ac28b4",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/replaced.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7961543ce55fd097ff5b420ecabd3926f29b8631d0ef0e0a802ca601a177e2d0",
+ "chksum_sha256": "823669670f811bb65eb885121e0081a4072bcb061616296e3898a2f6ade10672",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/merged.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f25d81fb7693d57c2abd74e8739be232a9cbedbba1e9f8699050d04ea18d2b38",
+ "chksum_sha256": "a4ad1680c84aa5f112a608b29bdf2d1191092b3ad2648bb23ed9e30abe4cac8e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/empty_config.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4573b578a199c5195348871a4f8d0b0daee309e9ee60368db6968c6e64ee15f7",
+ "chksum_sha256": "511dd52c567ab5523749431d68ff8477640d6163210157e3a369ecb806e22ee9",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tests/cli/_populate_config.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "94cb8dc2e04d8643d4feeedaaf3eb159c60bb1a997c8186a0ad7f33912a8b945",
+ "chksum_sha256": "9b121bba6a0892e8ff599846aa1ea5c388ae3c8a9e6a85192f43b89cf992719f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tasks",
+ "name": "tests/integration/targets/ios_lldp_global/vars",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_lldp_global/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
+ "chksum_sha256": "1ec7b6b36ce360d258939c3b6b1e6679713dd2ffacd4bf6565d5c1b5391179dd",
"format": 1
},
{
- "name": "tests/integration/targets/ios_logging_global/tasks/main.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "16f3cc0b8e2e2d5d9776298fab6f9d5648e4c35498db7605af69c8e97e122464",
+ "name": "tests/integration/targets/ios_config",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_system",
+ "name": "tests/integration/targets/ios_config/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/meta",
+ "name": "tests/integration/targets/ios_config/tasks/main.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7011b000e1a4b28787b459b2a05c625052f68b10a1f108068ec805bb7a0875f4",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "100c25aa8e342471c45f4ced56d10739c8a7f50ffaf83531800819f0911615ac",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tasks/cli_config.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "5f583eec9d6129fbfe6d2b800c2013f2dff80308e21b59c9da1fa7382b6a401d",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tasks/redirection.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4c45a3649d432bb34bfcde5f3557848f294212fdd78da9b1c0f9b98176f462ce",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/meta/main.yml",
+ "name": "tests/integration/targets/ios_config/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/defaults",
+ "name": "tests/integration/targets/ios_config/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_config/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
+ "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tests",
+ "name": "tests/integration/targets/ios_config/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tests/cli",
+ "name": "tests/integration/targets/ios_config/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tests/cli/set_name_servers.yaml",
+ "name": "tests/integration/targets/ios_config/tests/cli/toplevel_before.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b59e7228e155bfcbaa1863f12fbbdc641e01c2fdef2d6bd4f4aeb2f3fa96bddf",
+ "chksum_sha256": "289b05fea7a7180ab37fb5e04220fa7c387634fbfe67e997d39ea44e53b6b03d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tests/cli/set_lookup_source.yaml",
+ "name": "tests/integration/targets/ios_config/tests/cli/toplevel_after.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "10e512f2cf5dc0fe7c9d3cb0188fc3dc96dffa68beb61895d88c8dc422c886e7",
+ "chksum_sha256": "c80fc079cc0294cc808809f7524cd26dce8746cb3cbceccae5947c26a53bba77",
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tests/cli/set_hostname.yaml",
+ "name": "tests/integration/targets/ios_config/tests/cli/replace_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "810d48f3ce471254c763859c7d33ad70b06aaa28b45712179b4794f3b5a667c5",
+ "chksum_sha256": "7cbde273238be56ec3dc2174913de0c2933067aa634987a04dd7fb72fefeac3f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tests/cli/set_domain_name.yaml",
+ "name": "tests/integration/targets/ios_config/tests/cli/diff.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4bc85f65fcaa284e9503fe5643f16111f14daf7ba677abd84daa04302f8b007d",
+ "chksum_sha256": "c4223635f760bffc17141049ab0cb3e09c3e9b2a53398754c740569c1244a548",
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tests/cli/set_domain_list.yaml",
+ "name": "tests/integration/targets/ios_config/tests/cli/sublevel_strict.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "592210cc1bf19177523967179ec83b786b9c60d9341acdb087e739911876007b",
+ "chksum_sha256": "ce6faa181c1fb7ab5ba44db51d418b0120a7d110a3f4373e91ce02987a76fefa",
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_config/tests/cli/src_match_none.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3b6ae94a3a40d6baa6400753b0273af9e1f0c693c0b9d02a216b4d16c9afad67",
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_config/tests/cli/sublevel_block.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "chksum_sha256": "91c95c35263639fde90b44f93f0612c0a7b3c510f325285afe281d9fc121e58b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_system/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_config/tests/cli/toplevel_nonidempotent.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "68e898ba92f5164ddc8cc51967c5e2876e9002699d528634a67f2183dd558d39",
+ "chksum_sha256": "25ef9f513a03aa86771b90bd0d22940459f94fa3b2257ae7498b9217a405bb9a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_config/tests/cli/toplevel.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f45a6bb9f23763b221df958302548d88734cedb25ee2edc0fe1ec86be00b4e8b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/meta",
+ "name": "tests/integration/targets/ios_config/tests/cli/sublevel_strict_mul_parents.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ca18a9f33f955ba25c6df6be5108b58cb0b159406b531931d7886b65ec1a0316",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli/sublevel_exact.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8ff88256789e8892cc5604826818b4a694faa8dd37d8de6f37a06535724dedd2",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli/src_basic.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2544e95d1ed36fd4c73cad6dd719051035205bfd414ef4d6bbb73fe7e592b981",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli/defaults.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f299c02b02d7c454dd2eaa7eca83f4306f99b64430892077955f5159b3009031",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli/macro.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c50af815c1122d68ec8aa76f0738a923e3100ffbdce96ec9f6eeda091001ff12",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli/backup.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e567e119083aae3e8dd3739d64db3927cb554387079640fbff99b1d6b79f267e",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli/src_invalid.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e37382eede72ae657893c3933a8e6731db78596f46d5fede249d4d050e8f12b6",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli/save.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2fbcbac7be1a2444b9866a0312ebd7f30691de74f434b693b301e1b667efbc34",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli/sublevel.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "81e93d0c4240f0c189dcc3db9d2887404f6f79ccc22a7ae9d8c2c616a823ae23",
+ "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/meta/main.yml",
+ "name": "tests/integration/targets/ios_config/tests/redirection/shortname.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
+ "chksum_sha256": "a9d8f38448bbc15b4db9520e986758afbb1e4332917cfa4e676c4726ecb1324c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/defaults",
+ "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/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_config/tests/cli_config/cli_exact_match.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
+ "chksum_sha256": "3445b7155b0702ea632d8e846e514af4e58679edf35a1b00034c1f33611c7bcb",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli_config/cli_strict_match.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "faee234111770cb64085b9a25509c53fbd3fcc6d783bebff7592a0cf5ee4e317",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli_config/cli_backup.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "6c6e65aa217139078a0e172b54fc00eb2cfe51f2079cb7d9b0a5d9c5d2a74ca6",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli_config/cli_block_replace.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b9b16a4833c6d7626d43f1c1e90a106af469adc1f3a032875e78e13c6b563e5f",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_config/tests/cli_config/cli_basic.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "28f51d7f60e5fcd45a211c50797cc4142a3e4784cf8619ed41eadf1a630e4629",
"format": 1
},
{
@@ -8072,13 +8667,20 @@
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/templates/basic/configexact2.j2",
+ "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/setupexact.j2",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "78abef2216f92c74b21c0a935660fa35625c923e4d3b5d6eaa014a2f7b9d5182",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/ios_config/templates/basic/setupstrict.j2",
"ftype": "file",
"chksum_type": "sha256",
@@ -8086,17 +8688,17 @@
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/templates/basic/config.j2",
+ "name": "tests/integration/targets/ios_config/templates/basic/acl_config.j2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fed860520ec0b19850744af6be1c77939335d4a09539bf563d0c15aa6afc84ef",
+ "chksum_sha256": "819000cad7a1b4e27b8b206fe04b2d18c0bbba7876801d9f2786c94f76482050",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/templates/basic/configexact1.j2",
+ "name": "tests/integration/targets/ios_config/templates/basic/macro.j2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a112244df64f4360549463724af9ae4c598c3f39c22310a4d0a98c44cf034408",
+ "chksum_sha256": "240ea6bffb5f8140b8fb61c0e4505e89f76ea5c0ade1103b63b25c6024e57892",
"format": 1
},
{
@@ -8107,38 +8709,38 @@
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/templates/basic/configstrict1.j2",
+ "name": "tests/integration/targets/ios_config/templates/basic/base_running_config",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d7019ec0a3b0c34ed351eed7b9ea2979114804e6aac94b9433bd42789bec5b0c",
+ "chksum_sha256": "7385f5112a2ea15a4ca3f480bf6830bf91439a67073d846367170819b02692c6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/templates/basic/macro.j2",
+ "name": "tests/integration/targets/ios_config/templates/basic/configblock.j2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "240ea6bffb5f8140b8fb61c0e4505e89f76ea5c0ade1103b63b25c6024e57892",
+ "chksum_sha256": "d7019ec0a3b0c34ed351eed7b9ea2979114804e6aac94b9433bd42789bec5b0c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/templates/basic/base_running_config",
+ "name": "tests/integration/targets/ios_config/templates/basic/configexact1.j2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7385f5112a2ea15a4ca3f480bf6830bf91439a67073d846367170819b02692c6",
+ "chksum_sha256": "a112244df64f4360549463724af9ae4c598c3f39c22310a4d0a98c44cf034408",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/templates/basic/setupexact.j2",
+ "name": "tests/integration/targets/ios_config/templates/basic/configexact2.j2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "78abef2216f92c74b21c0a935660fa35625c923e4d3b5d6eaa014a2f7b9d5182",
+ "chksum_sha256": "d7019ec0a3b0c34ed351eed7b9ea2979114804e6aac94b9433bd42789bec5b0c",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/templates/basic/configblock.j2",
+ "name": "tests/integration/targets/ios_config/templates/basic/config.j2",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d7019ec0a3b0c34ed351eed7b9ea2979114804e6aac94b9433bd42789bec5b0c",
+ "chksum_sha256": "fed860520ec0b19850744af6be1c77939335d4a09539bf563d0c15aa6afc84ef",
"format": 1
},
{
@@ -8156,1375 +8758,1536 @@
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests",
+ "name": "tests/integration/targets/ios_bgp_global",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli_config",
+ "name": "tests/integration/targets/ios_bgp_global/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli_config/cli_basic.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "28f51d7f60e5fcd45a211c50797cc4142a3e4784cf8619ed41eadf1a630e4629",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_config/tests/cli_config/cli_block_replace.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b9b16a4833c6d7626d43f1c1e90a106af469adc1f3a032875e78e13c6b563e5f",
+ "chksum_sha256": "3c1978dc1393f0ddade54f4568fbe2a213f323e71e9aa334266bad4fd016ea95",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli_config/cli_strict_match.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "faee234111770cb64085b9a25509c53fbd3fcc6d783bebff7592a0cf5ee4e317",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli_config/cli_backup.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "6c6e65aa217139078a0e172b54fc00eb2cfe51f2079cb7d9b0a5d9c5d2a74ca6",
+ "name": "tests/integration/targets/ios_bgp_global/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli_config/cli_exact_match.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3445b7155b0702ea632d8e846e514af4e58679edf35a1b00034c1f33611c7bcb",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/redirection",
+ "name": "tests/integration/targets/ios_bgp_global/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/redirection/shortname.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a9d8f38448bbc15b4db9520e986758afbb1e4332917cfa4e676c4726ecb1324c",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli",
+ "name": "tests/integration/targets/ios_bgp_global/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/sublevel_block.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "91c95c35263639fde90b44f93f0612c0a7b3c510f325285afe281d9fc121e58b",
- "format": 1
- },
- {
- "name": "tests/integration/targets/ios_config/tests/cli/src_basic.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "2544e95d1ed36fd4c73cad6dd719051035205bfd414ef4d6bbb73fe7e592b981",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/toplevel_nonidempotent.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "25ef9f513a03aa86771b90bd0d22940459f94fa3b2257ae7498b9217a405bb9a",
+ "chksum_sha256": "3c6b76253c2d8e53a0df8c1f620ad1b90d537912cb81877fff08d39689a1537f",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/src_match_none.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3b6ae94a3a40d6baa6400753b0273af9e1f0c693c0b9d02a216b4d16c9afad67",
+ "chksum_sha256": "9c08349fdc001cdd463151f85c7bf4a5973c2dff048f27ef2ced9c769535edfc",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/save.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2fbcbac7be1a2444b9866a0312ebd7f30691de74f434b693b301e1b667efbc34",
+ "chksum_sha256": "22e70effcb2a1b4e95a65356aeb5851b46cc61d518aa81ce133b7934eb8c6d83",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/sublevel_exact.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8ff88256789e8892cc5604826818b4a694faa8dd37d8de6f37a06535724dedd2",
+ "chksum_sha256": "b6479de2654937093427d57930e46c699ad3265ee6f67624b7414d03cd9888eb",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/src_invalid.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e37382eede72ae657893c3933a8e6731db78596f46d5fede249d4d050e8f12b6",
+ "chksum_sha256": "cca6983e388a8e06b3b72325026c23d5794b130d45a74adb6d2156525ff8335d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/toplevel.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f45a6bb9f23763b221df958302548d88734cedb25ee2edc0fe1ec86be00b4e8b",
+ "chksum_sha256": "5cbe172d53fbd26d8dc675b06a513f8e815008c6f263c8bfae14600cef46f964",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/macro.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c50af815c1122d68ec8aa76f0738a923e3100ffbdce96ec9f6eeda091001ff12",
+ "chksum_sha256": "87c9833d471a6b80a6c2cd0a14d29ef5b983fe7d8e9e61e6f43a8c0e1e8a89f6",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/diff.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c4223635f760bffc17141049ab0cb3e09c3e9b2a53398754c740569c1244a548",
+ "chksum_sha256": "ac9b0f35b9607c4dcd6ee6fe8c4c5a3a890eb3ffef2606e5d9935648df7d5b7e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/sublevel_strict.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ce6faa181c1fb7ab5ba44db51d418b0120a7d110a3f4373e91ce02987a76fefa",
+ "chksum_sha256": "cfa79d338f05e3971ce8a30e951a60e8a3898786fecbf125898bfc20275377a4",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/sublevel.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "81e93d0c4240f0c189dcc3db9d2887404f6f79ccc22a7ae9d8c2c616a823ae23",
+ "chksum_sha256": "b28f32004005582bc80fbc2a9c8db6728687c25d87f74a365e61e7a20ec853d5",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/defaults.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/purged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f299c02b02d7c454dd2eaa7eca83f4306f99b64430892077955f5159b3009031",
+ "chksum_sha256": "440e31a2f87615c703a8a25d436bebf5e076b729ab0316294b1aea01585fb9ae",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/toplevel_before.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "289b05fea7a7180ab37fb5e04220fa7c387634fbfe67e997d39ea44e53b6b03d",
+ "chksum_sha256": "75c019721cd809896e681cc3826abf70eb2a7d0616bc09817577e99c02ef7070",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/backup.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "e567e119083aae3e8dd3739d64db3927cb554387079640fbff99b1d6b79f267e",
+ "name": "tests/integration/targets/ios_bgp_global/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/sublevel_strict_mul_parents.yaml",
+ "name": "tests/integration/targets/ios_bgp_global/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ca18a9f33f955ba25c6df6be5108b58cb0b159406b531931d7886b65ec1a0316",
+ "chksum_sha256": "9748f49b5ce9a99a9ebc47bf062708794d4c7cc7ca1fa2f887b8220f2f45bc52",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tests/cli/toplevel_after.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "c80fc079cc0294cc808809f7524cd26dce8746cb3cbceccae5947c26a53bba77",
+ "name": "tests/integration/targets/ios_command",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tasks",
+ "name": "tests/integration/targets/ios_command/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_command/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "100c25aa8e342471c45f4ced56d10739c8a7f50ffaf83531800819f0911615ac",
+ "chksum_sha256": "cbea343b9422e831a52eac293e12796cebaba8432a2a7c3ea24f3d7cfde98a01",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tasks/redirection.yaml",
+ "name": "tests/integration/targets/ios_command/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4c45a3649d432bb34bfcde5f3557848f294212fdd78da9b1c0f9b98176f462ce",
+ "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tasks/cli_config.yaml",
+ "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": "5f583eec9d6129fbfe6d2b800c2013f2dff80308e21b59c9da1fa7382b6a401d",
+ "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_config/tasks/main.yaml",
+ "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": "7011b000e1a4b28787b459b2a05c625052f68b10a1f108068ec805bb7a0875f4",
+ "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp",
+ "name": "tests/integration/targets/ios_command/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp/meta",
+ "name": "tests/integration/targets/ios_command/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp/meta/main.yaml",
+ "name": "tests/integration/targets/ios_command/tests/cli/invalid.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
+ "chksum_sha256": "9a5de37d3a4e9c0a0deb381515d7aad38814e2573570881499c2f37d01c33148",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_command/tests/cli/contains.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ac41c0332715a477675065b303c059029f452524c9613bfa6837221b3c8a4748",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_command/tests/cli/bad_operator.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
+ "chksum_sha256": "114c1244968981a22617d661fe4e9de4734037af8970bce9b0c5b79102f8ae6e",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp/tests",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_command/tests/cli/error_regex.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9d8673ef0e332533bc520e1fc69282244014b33fe4fd67c9df97fb0c45389b35",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp/tests/cli",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_command/tests/cli/output.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "90067084bae011b7afc19fc1569700cf0007d29ae86d423be0111fbdb7d9bf8d",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp/tests/cli/basic.yaml",
+ "name": "tests/integration/targets/ios_command/tests/cli/timeout.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9f61afc65151115e5a86c79276acf3c3ced37cd6df01cf54550ef54252792ec7",
+ "chksum_sha256": "99999a86b0c912cd067669a525d1e0032db4e19aac5fedec7593bfc8868ae37b",
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp/tasks",
+ "name": "tests/integration/targets/ios_command/tests/cli/cli_command.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "765a06846e98c1bc59b769855ba3c28f6ed2b7f8301b1aef0b8f0a9a4aef4863",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_ping",
"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": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "name": "tests/integration/targets/ios_ping/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_lldp/tasks/main.yaml",
+ "name": "tests/integration/targets/ios_ping/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b0906e69a469f54c61369370c1de70ece7ed9341c9647ae69f471544fad206e4",
+ "chksum_sha256": "d4fb9eae8dce0d7933579bdf2d3f8795995a4058621bb90be902cecbb7fda0da",
"format": 1
},
{
- "name": "tests/integration/targets/ios_user",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_ping/tasks/cli.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/meta",
+ "name": "tests/integration/targets/ios_ping/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/meta/main.yaml",
+ "name": "tests/integration/targets/ios_ping/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/defaults",
+ "name": "tests/integration/targets/ios_ping/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/defaults/main.yaml",
+ "name": "tests/integration/targets/ios_ping/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
+ "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/files",
+ "name": "tests/integration/targets/ios_ping/tests",
"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",
+ "name": "tests/integration/targets/ios_ping/tests/cli",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/files/test_rsa",
+ "name": "tests/integration/targets/ios_ping/tests/cli/ping.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "660b96e5ac6d6bd17900490c4749ff3a63898bb155db0a661fefbd6ac6f0fc44",
+ "chksum_sha256": "beb45b19b88ea64c61e0d67d7769275c18e3c12a0c572bea86d171bada913956",
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/tests",
+ "name": "tests/integration/targets/ios_cliconf",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/tests/cli",
+ "name": "tests/integration/targets/ios_cliconf/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/tests/cli/basic.yaml",
+ "name": "tests/integration/targets/ios_cliconf/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "acbe615c9d6ee6c43971ed6986a31ed4e769c623d8f91f2258bbfb2255f76361",
+ "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822",
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/tests/cli/auth.yaml",
+ "name": "tests/integration/targets/ios_cliconf/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e53af029ea314a0776f30900a0438f1e4555fb454978b154f750ce86443e74bd",
+ "chksum_sha256": "2d3350be00fa2af0f217f369684578df724bcf9550402e7a54ef1b84f32dcb53",
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/tasks",
+ "name": "tests/integration/targets/ios_cliconf/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/tasks/cli.yaml",
+ "name": "tests/integration/targets/ios_cliconf/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/ios_user/tasks/main.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "a8da0d0bc00401711103caf4be61022ba74b53c8296bfcd784db7ea4853111c5",
+ "name": "tests/integration/targets/ios_cliconf/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/target-prefixes.network",
+ "name": "tests/integration/targets/ios_cliconf/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "39053a91dac30879cf24512c4234e519681a1e88be8af8b18415df87fa4b9006",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/sanity",
+ "name": "tests/integration/targets/ios_cliconf/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/sanity/ignore-2.15.txt",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
+ "name": "tests/integration/targets/ios_cliconf/tests/common",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/sanity/ignore-2.13.txt",
+ "name": "tests/integration/targets/ios_cliconf/tests/common/_test_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
+ "chksum_sha256": "c48a21095f6edaea997c25042855b8628c0ca7181366ee8488069286ab350873",
"format": 1
},
{
- "name": "tests/sanity/ignore-2.12.txt",
+ "name": "tests/integration/targets/ios_cliconf/tests/common/_enable_archiving.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
+ "chksum_sha256": "63ff50f1f1f57a709881dd26a33223c2316775239e9fc21dfeff23adbaea7ebc",
"format": 1
},
{
- "name": "tests/sanity/ignore-2.9.txt",
+ "name": "tests/integration/targets/ios_cliconf/tests/common/commit_conf.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bed465cd9d63677b0cf774ef363fd3f6cb4ff0c48d9bf23f4fa3f470928aef50",
+ "chksum_sha256": "86cde52806aad9c78253ffdb74022af60cb99ff51c80e04adbbfde1af72254cd",
"format": 1
},
{
- "name": "tests/sanity/ignore-2.16.txt",
+ "name": "tests/integration/targets/ios_cliconf/tests/common/_cleanup.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
+ "chksum_sha256": "5386a829c04704371984f8ce25e2c63213c131dd62775410cb26568d37e923a6",
"format": 1
},
{
- "name": "tests/sanity/ignore-2.10.txt",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "c0f3ca20b2ddb840348441c83fd9462f938ac7f5c956f8aeb38c86ef366493bd",
+ "name": "tests/integration/targets/ios_cliconf/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/sanity/ignore-2.11.txt",
+ "name": "tests/integration/targets/ios_cliconf/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "51979d5936c7057ddd1751204907d60dd034ce97a3118ea4fadfc3376b640572",
+ "chksum_sha256": "3de9b3530a2bce1c236f2ddc4b95f4282226d88b6212be4d1ff1fbc85d5c131f",
"format": 1
},
{
- "name": "tests/sanity/ignore-2.14.txt",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1",
+ "name": "tests/integration/targets/ios_linkagg",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/.gitignore",
+ "name": "tests/integration/targets/ios_linkagg/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_linkagg/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b5726d3ec9335a09c124469eca039523847a6b0f08a083efaefd002b83326600",
+ "chksum_sha256": "8171ce9eb1bd2474dcb5e0f86eeb142567bac349514708f53c24829283fd382e",
"format": 1
},
{
- "name": "tests/__init__.py",
+ "name": "tests/integration/targets/ios_linkagg/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
"format": 1
},
{
- "name": "tests/unit",
+ "name": "tests/integration/targets/ios_linkagg/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins",
+ "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/unit/plugins/__init__.py",
+ "name": "tests/integration/targets/ios_linkagg/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf",
+ "name": "tests/integration/targets/ios_linkagg/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures",
+ "name": "tests/integration/targets/ios_linkagg/tests/cli",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/ios",
+ "name": "tests/integration/targets/ios_linkagg/tests/cli/basic.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "01543795b9d0559974aa6eb2e501541a442c6d8a61361ab6ce30eb7d7a0610e3",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_lacp_interfaces",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/ios/__init__.py",
+ "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/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "42f682d0706bde5cedd3667110b289d169b29ca20a1692b85c51bbe5f1e3131e",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/ios/show_version",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "28896cfd7a101f137f8433db1efdb33343aa43425aaedc2d4f7eebec7e71204d",
+ "chksum_sha256": "2f113e17755cf29780c0366eea077fbf7d12d9332c0d31df993556813c20a9bf",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/__init__.py",
+ "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": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/slxos",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/slxos/__init__.py",
+ "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/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "337f2c06ea2b0c31adfc06bd0684edb480b1a333dc4d82fd36e74e6efad7d6ba",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_running-config",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d1a135373ce559af818475189bbfc8ff838f5891869b62e159e38ac4c30b3284",
+ "chksum_sha256": "6b15190694a3230175825f662ffc5be36c207a5508f8dd03e34d0f16dba801c3",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_version",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e18e1a4f1640ca226a2f0d067a422af58218fa7f191a8b71394432a56177c7fd",
+ "chksum_sha256": "5bb10615fc266a5079e9adaf3307602bdefac54f4e8c9fda96954eb59ddc1485",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_chassis",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1ab5008e1e19a8b1995b8c284856ae37ae5d242975b81057a3f0127fafa0f7a2",
+ "chksum_sha256": "200cc72937b5aab4388efc5e85b4f590dfae9bbbfd9668c2c8390d42c73cb1a3",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_startup-config",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_add_port_channels.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d1a135373ce559af818475189bbfc8ff838f5891869b62e159e38ac4c30b3284",
+ "chksum_sha256": "37e0850a33908a4856f7167d6e488cbf3b6060950a032aae1f1006dae560d2aa",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/nos",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/rtt.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3de8041d6d7c288d7f421fc629c2bbcfd5b1faf29d3785fb1f8c39b6b5f36775",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/nos/__init__.py",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "8a4d9930854480ec68685dfce6a5ca53170d519fa93b8b10ff89d84c2fef906d",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/nos/show_running-config",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "42f2e50d84821d1ce5c9ddfa082e7a6086254ef9908166a0d4523a3dc5b6b2df",
+ "chksum_sha256": "83acc10766bff99eaf1085cfc2fab4b54e4101edfc70d06c19f65eb5f90f0478",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/nos/show_version",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a21600440d1fbd2208fd81eeeaa632cfdf6b69c060bcff46e5a3f4a5f5c26f68",
+ "chksum_sha256": "05d13aca3673ed53547e84c3a96b852f6c6b21e31b250ccae1a3c9dc8a455415",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/fixtures/nos/show_chassis",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a2890b7a8db9c1e8954a186fa311c8a2b44477b1d04bff9c32bf75b7797b4533",
+ "chksum_sha256": "ac8361b624da0372fb79c80bd147c5b9bfed4d4140d0be7fe9957b75e414c61b",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/__init__.py",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "6fd2582bf431113cefd8a863baf6d1b6908f5cd142dccde32ef536feb29d0702",
"format": 1
},
{
- "name": "tests/unit/plugins/cliconf/test_ios.py",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9a6d6718affe7ee4cd40691f7b18203bc9d12821503bc49e7a074a837c8bcd72",
+ "chksum_sha256": "fc43ad13fcf0465249c1941a418f61f36fba08a55afaef2aa8a7949ed028a7fe",
"format": 1
},
{
- "name": "tests/unit/__init__.py",
+ "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "e87a35985502b9c92eb9c60ed83fdefcc11a17e26b421e067dcf7be3624c8503",
"format": 1
},
{
- "name": "tests/unit/modules",
+ "name": "tests/integration/targets/ios_lacp_interfaces/vars",
"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/utils.py",
+ "name": "tests/integration/targets/ios_lacp_interfaces/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fec06b445abd9398a3dbed94e82c9e76f7daa125c13f09e7842a24aefbb216ee",
+ "chksum_sha256": "866d49b9fb83bafefee3c2ed7ba79d894e2b28af83b4fed56ad48982c364a894",
"format": 1
},
{
- "name": "tests/unit/modules/network",
+ "name": "tests/integration/targets/ios_ntp",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/modules/network/ios",
+ "name": "tests/integration/targets/ios_ntp/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_l2_interfaces.py",
+ "name": "tests/integration/targets/ios_ntp/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b8fdf8d1457ca65463acf14c3ffc4703872094f4e6a8a73f7650aa89c3a7f058",
+ "chksum_sha256": "ea10fd1166a91f0a0c747a5be6a85f313c52f5f3d9f33cdc68e9424f3cc56a42",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_facts.py",
+ "name": "tests/integration/targets/ios_ntp/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "713b88ef1d4032807e5ceba1a12e489d2fc2bab2d1ee22b8cf764ce85aaaf63f",
+ "chksum_sha256": "427740e10c11b97e4353bc00c47b3a0d25b23479e67ba0373d932f5d25c23b95",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_bgp_global.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "99acc97387cb48286fe1f0f06d9afd7fb9515f3f9c73655c19af6db5cd62e81f",
+ "name": "tests/integration/targets/ios_ntp/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_acl_interfaces.py",
+ "name": "tests/integration/targets/ios_ntp/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c847859d97d7c3053a35a8a26235d8d5368aa440a7fd26e2244fb040bc677779",
+ "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures",
+ "name": "tests/integration/targets/ios_ntp/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_interfaces",
+ "name": "tests/integration/targets/ios_ntp/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1cfa8bf44c06737f51019c8a3d7a6987fb91cb55c72a3a4a883f0eb75f13c27f",
+ "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_vlan_config.cfg",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "73a0c5b62bea4279d25deae4c2e04bf12c53fc3784297675a92eb98c911696fc",
+ "name": "tests/integration/targets/ios_ntp/tests",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_vlans_config.cfg",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "9e3b415848259747054d6586d9a85787a48f2a5d3fd5866c41f8b050eadfae90",
+ "name": "tests/integration/targets/ios_ntp/tests/cli",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_cdp_neighbors_detail",
+ "name": "tests/integration/targets/ios_ntp/tests/cli/ntp_configuration.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6e29939eafbbdcd5d64d8558cf6f5fe9d7fa1b806e62b5f19b65b0401c9c9c44",
+ "chksum_sha256": "11d03d940194a739c19346b9e626e425de69706b572ff7a178b90cc21a6f36d0",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_virtual_switch",
+ "name": "tests/integration/targets/ios_ospfv3",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "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/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a3c3bbfb2fdcb11e3f9721d7596800690969e51e7fc66ee2e5adae3b524f7177",
+ "chksum_sha256": "2ee4493aa601f74dca37f18dfebff80578f8ad47283d1921825a9036bae468ad",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_ntp_config.cfg",
+ "name": "tests/integration/targets/ios_ospfv3/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2dc4f5c356e2ba9f40ec1ad94b5bc4e597c39657662156764465f156ab6cd7cd",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_user_config.cfg",
+ "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": "92081628d201c43cc40e2022f0ebac80f1ee5c1e78e19479d0b94780945a9657",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/__init__.py",
+ "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": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_lldp",
+ "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/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ad64c29374175a8d737d01ae856c16364c442fca9ea7b9447ab8f22d9ed78dad",
+ "chksum_sha256": "238918c44b8752332fe7ee6df2e293a51da17252fdf2362b337e6a897cc224cc",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_l2_interfaces.cfg",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "743adf2fb8dcad62933e91c19b47b2b0437868c7e50db9a4e556431ed696f2f5",
+ "chksum_sha256": "844b1f73132324bcee3f3390fce22388df69b69e4266ffebbdd4c5d6a8a4c2e8",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_logging_config.cfg",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "547917e90b62a4ef7eb05c6a2527019acf8e3790d7d5a0c9f6b24af6a82a2fb3",
+ "chksum_sha256": "72297b557d1b34d29b999d26e00a0b28d813fd1e458338acd1cd3b24b0a35aab",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/configure_terminal",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "2bfc27b217fab25508ee8dedb4819c40bdb98b3352c464065f8ef169622f4384",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_system_config.cfg",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/_initial_vrf_setup.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ecb0f88d690961592ffec4c1dbeebb4b6883ed2fee08fd60117a3b7937b37949",
+ "chksum_sha256": "7fb8dc743143aa6677f024b7333e02bb1f52f1a9c434cd86e1617b442dcc8a0b",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_dir",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/rtt.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "be78a9714687ce28322efe35f1df91b12b532d87f552aae6c321d44bab0109cb",
+ "chksum_sha256": "8a735801dc4fc0769f2773722caa333ada8c5c41daad731c271c185ff1d6a040",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_cdp",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5abf76b46295216c079870fba8c70f8f6064ccd667e80d91e31b47ab84f6fd70",
+ "chksum_sha256": "c70156e646606c78e8221d3f09140d0be29bfc307756e6f0993b02b78b8fe9e9",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_ip_interface",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/overridden.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "c8f73d52be036135d76b6157719db5f9bd4f7761ebeae5618e48a339ed14ae4e",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_banner_show_running_config_ios12.txt",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ed9d617788c3a95226fda5a0dfa4271afe77626709937b27a3af70ffde7af53a",
+ "chksum_sha256": "75178f12ee6688bc6635aafb6d83adddbed9b5a0d12fb9d39c819afa14adba64",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_repeat_2",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4962134fb2b2230a111b5b94f904ba094c12d0e0775e22c50b3db6599dbfcb36",
+ "chksum_sha256": "d825c44ce8c9cec4e8b41ce23a867b76e766c6e6a3491d6621585bce8bdd57c3",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_lldp_neighbors_detail",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/replaced.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "11544c73f3e88ab5384140abf1bedd0c2501f4ed13132ab56bd22a53909183b0",
+ "chksum_sha256": "23df18165ce662f9a6837926a752e92d9c0500334a68492ae8607c2385b4cb29",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_bgp_config.cfg",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8e1448b74254646dea1644addbebf552013bc999c32b8a90f3141fadfd2e045c",
+ "chksum_sha256": "616e7d9e3cc11d85aa6f6948a80ba8ad080df33b6fa2574e58ea96dda1b8b4d7",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_banner_show_banner.txt",
+ "name": "tests/integration/targets/ios_ospfv3/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fcbd9e21fbc41c072eed699ebf08ba9fc0e86b9084e4e54eb701cc12d4c764d0",
+ "chksum_sha256": "21aabfd4dd00cabd0670087c3f46d8f3cf0dac51e013d14790546ec52612579c",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_size_1400",
+ "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": "825819c8953b25588aadeb8264ebc23a52d06537049b7e3f4f0b9edfda1b7e45",
+ "chksum_sha256": "5d9a640abfe561027b4afaadcf0306d9f52437a9ca11c8c6bd33aa39668cfc2b",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_inventory",
+ "name": "tests/integration/targets/ios_hostname",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_hostname/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_hostname/tasks/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "695c97917cde02fca97d816d92429a12142d6400180388630847a6938513829f",
+ "chksum_sha256": "9e463dfec9973774a7a87d75f8e492a829e08a207f7330616a23032087174429",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/show_version",
+ "name": "tests/integration/targets/ios_hostname/tasks/cli.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc71e5e1dc8e16c64ad26477c7b0dc0d0278a20be9dc4a6d53224328f239f79b",
+ "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_switch_virtual",
+ "name": "tests/integration/targets/ios_hostname/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_hostname/meta/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "db1b7ead274089538a05952a47f1e7800560ca1a552adc345c34dc2ab4c4f9de",
+ "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_ospfv3.cfg",
+ "name": "tests/integration/targets/ios_hostname/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_hostname/defaults/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b45b7eafd03c14cb0a9737561ddd60b86b708aabe1223697376c56066fabb29c",
+ "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_route_maps.cfg",
+ "name": "tests/integration/targets/ios_hostname/tests",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_hostname/tests/cli",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_hostname/tests/cli/_remove_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a2764456add35e41e5109cefb0694cd6a708bcf77239259b47ed60d86fa06856",
+ "chksum_sha256": "070883e8b78940daa953461fd32520d1bef4bdf4cf98664b3e82c7d0fae842b6",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_logging_config_ios12.cfg",
+ "name": "tests/integration/targets/ios_hostname/tests/cli/deleted.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2923b7e2af16ca384a4c44c7fc1c9944367fffc1769b9ee6c41d73a9e0a2c1fb",
+ "chksum_sha256": "5b7529ae69029b3e22b4dec95b722595deebe267cb2f2735a85fd53a4c82bac8",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_vrf_config.cfg",
+ "name": "tests/integration/targets/ios_hostname/tests/cli/gathered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9ee43d746654712aed9c1163d6130a7b6de350a3efef3e6e228355378b20be50",
+ "chksum_sha256": "0a18425a89f8e85573729e8c29b8c45e491dd6814b221f9d42a0acf0960689e8",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_10.255.255.250_repeat_2",
+ "name": "tests/integration/targets/ios_hostname/tests/cli/empty_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f6102ec8eb37947bb6892dbb4c1252c794ef52376540c9d8ce2b9753aa613685",
+ "chksum_sha256": "9313132bb4ea08fdfebbd76b6376eda299d1e61fef0b62973309894399193613",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_ospfv2.cfg",
+ "name": "tests/integration/targets/ios_hostname/tests/cli/merged.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f557ec41733d7040f5585b79e18b88623ace43d899ac80edc055e01c469240c1",
+ "chksum_sha256": "8f0c8602b6863de3c09c0f29fb3fbe83fc0afa94d1358db7cb974628c616ebc4",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_config_config.cfg",
+ "name": "tests/integration/targets/ios_hostname/tests/cli/_parsed.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6fe81e446733fef4e3643a80042ab4111b9b0c927599c4b5972ecea4c18b4ffd",
+ "chksum_sha256": "334a751e168137370f8d5baaae2c017e63cd9870191a2476633bdb33f5aec915",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_memory_statistics",
+ "name": "tests/integration/targets/ios_hostname/tests/cli/_populate_config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "38375b22d4c94dad4289ad32a3360980e0e8f30d69c4a0c2ab1d8181d4fb811b",
+ "chksum_sha256": "909ad0ac69441e0c20405814bade15872ccc23e5b736632efcfd2880d863c6d7",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_l3_interfaces.cfg",
+ "name": "tests/integration/targets/ios_hostname/tests/cli/parsed.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2836ef546936bc7b3ff57cd557f54d5c5024ecbf64451cbb4f0d9c937cdb71c6",
+ "chksum_sha256": "e42472783ff99e3351a0a581b2ddcdaca689eb9cb8044af829d580473e17ac35",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_size_1400_df-bit",
+ "name": "tests/integration/targets/ios_hostname/tests/cli/rendered.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c8452a768d797ca829ff18314236a7275cf03a14f751c6f53c8b6711bc8a1d7f",
+ "chksum_sha256": "6cd846336af90bbf055ebce81f350f2187733b3580f5c227b07ad766e6c4bf9f",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_config_src.cfg",
+ "name": "tests/integration/targets/ios_hostname/vars",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ios_hostname/vars/main.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "57d42d2e8e8b7a4b6cae566115ee42fecea077b525cace10cefc3b7dbd85f033",
+ "chksum_sha256": "febb64d561f5a456e89d59fb77210502df86daa4eca07014b96993b76d0bc5ba",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_prefix_lists.cfg",
+ "name": "tests/integration/target-prefixes.network",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc8a935708bb8e0b18381fb2cbd56f7bd389aa02255d0b5cbfe36a5b633b1bf1",
+ "chksum_sha256": "39053a91dac30879cf24512c4234e519681a1e88be8af8b18415df87fa4b9006",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_config_defaults.cfg",
+ "name": "tests/integration/network-integration.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "114e89387a2b3cb37c475ed22f287f83dd93bd16a51845286b27f8355d1ae0e5",
+ "chksum_sha256": "d67b11263a8f50b30bf43c7c2b4bdd8dc4f173f0b5dd22761311360dfbd56a1d",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_version",
+ "name": "tests/.gitignore",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a6290b0be0cd8622c90617eace7c4c8bb1508a77d33c2b0e7bb9d6f7f8967282",
+ "chksum_sha256": "b5726d3ec9335a09c124469eca039523847a6b0f08a083efaefd002b83326600",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_ipv6_interface",
+ "name": "docs",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "docs/cisco.ios.ios_vxlan_vtep_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "aa7c5614fed7ad1558e45d3d74eb3188cbe0958515593ce2c437d017406ee842",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/fixtures/ios_logging_global.cfg",
+ "name": "docs/cisco.ios.ios_lacp_interfaces_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "89a3006dad756d356d14bf9704c493b1ebac4267dca6344c6af536d53dd1bbf4",
+ "chksum_sha256": "7bf92f7c407a17daa5b09137112c2d2764968e812b549b74cd7a8e8a45e255c5",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_bgp_address_family.py",
+ "name": "docs/cisco.ios.ios_acl_interfaces_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c12cafbe1f82925c62462e974d949bd48f119e1339a36adbd2becf77899075a5",
+ "chksum_sha256": "cd05ed9845d1fc11685c746e9a9652f6bbd2670ec0a1d9ca39c5922ae46a64ba",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_lldp_inteface.py",
+ "name": "docs/cisco.ios.ios_acls_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "aaefaf4ab2bfd58d99396bb634db067b881eecd359dab67de6fc872b46869853",
+ "chksum_sha256": "1aa35d1812bbb92f7b8ba18d3601df03851c682fde01e671f37ddc4c89ff7977",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_lag_interfaces.py",
+ "name": "docs/cisco.ios.ios_bgp_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "438e73f06fa89c1a6a8388bd997de83ee6a77d173b53dbfd228612e4f0e60946",
+ "chksum_sha256": "3613c63ea42c85758bc78c1f2f5c970489a96411c41cc0ba7bf216994df8bdc1",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_config.py",
+ "name": "docs/cisco.ios.ios_config_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "59037865cd985ba8cc2806ec1a2e1e6b62c5055894c2c6ff501fc0d55424be51",
+ "chksum_sha256": "3240939a84f27d689eacaf2ce4c89da3c03ee5a2a2739a127d196cb2691784b5",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_static_routes.py",
+ "name": "docs/cisco.ios.ios_static_routes_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1efd94447b604c833013dc546415cf8c086ba2552dd5e16e1f0063da92b5608c",
+ "chksum_sha256": "af3d82a1af37c9549d096096f205882d772383bb5c2535ad29efa8424cd413d4",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_banner.py",
+ "name": "docs/cisco.ios.ios_ospfv3_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3f093e6f88c6c61cc9bf8f3d2f3e8bdc31d7462f5312506255e645fb55efd70",
+ "chksum_sha256": "e832b1aef91fbd553177805605dd98df5f00f78c63be2a607b631d826e11e086",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/__init__.py",
+ "name": "docs/cisco.ios.ios_ospfv2_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "1cda4e6568a61d285a6a2de4dffcfa476d33b65ab1b41565d981af4d3bee587b",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_route_maps.py",
+ "name": "docs/cisco.ios.ios_bgp_address_family_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4b30486248832f453a567f3cd22ad7338015d0dfc3248645688b6e42e6c7c65b",
+ "chksum_sha256": "ef1f1c1bce1238a8e1c30e174c361edb41440f8a4ca5892a51651d687e885b9a",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_interfaces.py",
+ "name": "docs/cisco.ios.ios_l3_interfaces_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d1d24c673386ec9c188374e4b4454a7df00621e982bc16e16f47f9e9634ebe1a",
+ "chksum_sha256": "51ba7650c179e3da62a417f92608431f7d46cf9fb6206772ecd3d5f703d856ee",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_hostname.py",
+ "name": "docs/cisco.ios.ios_user_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ed6c494e1bcc5b3f2fb86a70232dfb7a821ff85829ce67911ce5206815a9bdf6",
+ "chksum_sha256": "3e0e3e1d9ad718db52097b1754064e310a3a434709203a7905f6e1a72fb71722",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_user.py",
+ "name": "docs/cisco.ios.ios_facts_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a4c6fd973b9b241c6d9f9567ef241f0d5b0cc5fb554b93870087c219a9e47a2e",
+ "chksum_sha256": "827c48cf4385cff2d361bfc60df1d6678cbb046f3ed39ff42426057448cdba1a",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/ios_module.py",
+ "name": "docs/cisco.ios.ios_logging_global_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8a08cf8bab33ef88408880ffc6f8034be5e532945ca4f79d82b213426104876c",
+ "chksum_sha256": "6ec4443978907eee51ca4b9f1dc2ffe6534b3c3479e7555aacfdb82895d45594",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_logging.py",
+ "name": "docs/cisco.ios.ios_ntp_global_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "145691b250ca573e6693a76668643206023d1d62466da8c2b393c0a50dded586",
+ "chksum_sha256": "aac96eeacf4a0b344b25dca00c91f780a8b9233e9ceed3a71e0fbd339739a1b5",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_ospfv3.py",
+ "name": "docs/cisco.ios.ios_vlans_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1726a0b36124418df73c8d54b3341b5c438fa4ef39d0dd4d89ffb2747d2d4fa5",
+ "chksum_sha256": "913875bef455036cf1ee302748251aa802719e0ef415a6599df62f4afaaf843d",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_logging_global.py",
+ "name": "docs/cisco.ios.ios_snmp_server_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a556b8cabc831d36b9f05b47ed680822da513db69da49c1bda5d8263d254b507",
+ "chksum_sha256": "fd2156ed69609eb4271746660a9b338a4a1b2e5d7fbf9533ac350f1a5d84a407",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_ospfv2.py",
+ "name": "docs/cisco.ios.ios_prefix_lists_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3c4d2d8d6586542b31bc26fba9373377c1adc6c9e59b48b8a805cd43992c4002",
+ "chksum_sha256": "c6d0a0fe60c76d6c91776efcc420942c78f5ccbdc3e0f413e4ca3e7ead839506",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_snmp_server.py",
+ "name": "docs/cisco.ios.ios_lag_interfaces_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "96279c80be0ae76d3506798cbcb2c880deeacca7a4548fec687a922f4a4ff3eb",
+ "chksum_sha256": "97da1f7af33eae5e26a4537ddd3cbf0fc4fd811da0609dea6db3af82af8f53bd",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_command.py",
+ "name": "docs/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0b4f793aecb789530a6f3f0001fafbe618ffcdc464ca69ed105bed3bf070e8de",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_ntp.py",
+ "name": "docs/cisco.ios.ios_evpn_evi_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d2987bd3aa0842cc1aa97484424f9098814f539bccba1d94c12bf33d51200365",
+ "chksum_sha256": "10749ddf85943d2fe186d9ba9bf1fef8326bd267408ee21e9497e7b751f09e9a",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_lldp_global.py",
+ "name": "docs/cisco.ios.ios_linkagg_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5e3447e68a937e3dd6d8afac659ba90c2863be80440ae29b8ecdb47cd5b6ef74",
+ "chksum_sha256": "b123e1380c285f81d808170a79e2e82972af3c1b2e438cfb698a5d373c6be3cf",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_vlans.py",
+ "name": "docs/cisco.ios.ios_service_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c44abdc4ddc5ffc7a1ba81304e411e6a78eda582e942b771251da5a97b691392",
+ "chksum_sha256": "339ca54b72e461c16788f0a63bdf71786b9a45a4d848251916811ecfe9254a4b",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_ping.py",
+ "name": "docs/cisco.ios.ios_route_maps_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1fdfeaf37d552c47fa19ebe8a58bb7d9406a05671210ef26a9649641180a9c2f",
+ "chksum_sha256": "af30dade8c6261c751142d983650af7a4c8c2e142f2fceaaf3bb604e88d9beb4",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_lacp.py",
+ "name": "docs/cisco.ios.ios_ntp_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "77b8927c8410b65d65801bfa814619d303d13e05c3e8d98f2a0aa0d179ddb106",
+ "chksum_sha256": "0ddbf43a41134d7100e58365a10c02a60674a1b37152d4bb07a2dd42b2e54d97",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_system.py",
+ "name": "docs/cisco.ios.ios_lldp_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f8bcc32990f03f7c3fcd480ba2166364190e718787fac98303dc45fe829dd545",
+ "chksum_sha256": "f499f07239788d95c91a8413b7324e5370a88992e41ded149aeb130412e4f3b5",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_ntp_global.py",
+ "name": "docs/cisco.ios.ios_interfaces_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9b6463d07b18bfb5d89dfb1ebf35b681d7a041d08012c12ac07d9390ef03729e",
+ "chksum_sha256": "f2081011b7cdb08c36dea3476b69ae849614273cd5e800e374edc9123fc04d71",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_service.py",
+ "name": "docs/cisco.ios.ios_system_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cc4c72613fd26a2cff6fd2f622df078654b50bc6ffd73e2bd8d6814666fb1a4b",
+ "chksum_sha256": "2d9c9ff70523a1f9db7b5d860607252a06b799c12ea8e001944075338f0c32c7",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_bgp.py",
+ "name": "docs/cisco.ios.ios_vrf_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "16e9b1cc88b73924484d635ee5a75a1906cb759e11316cc3ca2bc6884e03d216",
+ "chksum_sha256": "6ffdd6a11d84d30baee6bf9a10859470627b4ba0521d3d3eb85def9758078a4d",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_prefix_lists.py",
+ "name": "docs/cisco.ios.ios_lacp_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "22e88f73376e7c35e9ec397137e8498fda003fa6a7741ce0500916ea33beafc6",
+ "chksum_sha256": "3bac07e44bfe117813c4d65c786470b2acbeb128b0261b02f027d4424ffcc746",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_ospf_interfaces.py",
+ "name": "docs/cisco.ios.ios_l2_interfaces_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5e3801bc1c5ee713f5ae532a802ad762f6eb3e63ee61b6095956e12a4c7002b8",
+ "chksum_sha256": "0a4f000d638f6ee2223d344c7b3c260cfcead1d04793e33c84da4cbbd30b1358",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_vrf.py",
+ "name": "docs/cisco.ios.ios_lldp_global_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "87738d84fd9aa4d7229c1ed67c7a422bd945c395b965e959a1243ef5b3a53d11",
+ "chksum_sha256": "12967941c3851fa6f982162e20ce5a0a3c4eeec8f948b367b8ba680af7c50202",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_lacp_interfaces.py",
+ "name": "docs/cisco.ios.ios_ping_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "43c01830025e92ee8c6ccf6fb12aa0c88ff45b74f18fc75477a5d3de1649f707",
+ "chksum_sha256": "2cc3e7247773d272c66efe02e9791b27bd7ae28afb28a26d597d80741042467f",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_acls.py",
+ "name": "docs/cisco.ios.ios_bgp_global_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0d347a6af14fb66567b7f659fa9a1c56df3059a08a618917cd3d5c4d9bcf4207",
+ "chksum_sha256": "89a09f8b1c1900b6dba84033c17963299db060d02fc6b79b1c252c5605765aea",
"format": 1
},
{
- "name": "tests/unit/modules/network/ios/test_ios_l3_interfaces.py",
+ "name": "docs/cisco.ios.ios_ospf_interfaces_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec7726affce7f1a2b1ece17dcd847f8e41de240b2645eab9108bdb88c1999a5a",
+ "chksum_sha256": "736695017ca633989a5ce8d1e661fee1cf6d545cf98f975a8ecc42897e352dcb",
"format": 1
},
{
- "name": "tests/unit/modules/network/__init__.py",
+ "name": "docs/cisco.ios.ios_banner_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "347f291cfde6d03ea4e5d58a4e81b565cb29450c980cb453d41807836ec60c1f",
"format": 1
},
{
- "name": "tests/unit/modules/conftest.py",
+ "name": "docs/cisco.ios.ios_hostname_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "354440d86f684a9641f329807a687fe71fc66ab901207f7a166ecfa648935488",
+ "chksum_sha256": "c17247e2b97de9179680bdd136c547b0b8a4b15d8f6faf22d79543f6e9800246",
"format": 1
},
{
- "name": "tests/unit/compat",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "docs/cisco.ios.ios_evpn_global_module.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ea291a372120106d38f214b7e0585cc40768c3459232a46d717042872c3ed18d",
"format": 1
},
{
- "name": "tests/unit/compat/__init__.py",
+ "name": "docs/cisco.ios.ios_command_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "8b4546a6a039b29fb5919487fe5b8339d5cb34464e23cf1b07b2d82baf55bbed",
"format": 1
},
{
- "name": "tests/unit/compat/mock.py",
+ "name": "docs/cisco.ios.ios_cliconf.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8ef8138e4a1226b85dfb3567d9be04aaef39270af32ae62765b745f8f46cb0ec",
+ "chksum_sha256": "a17502a2fd8ed08d762ce2e747b95c2b5dfe106d69afbaf97b8e141ac0597668",
"format": 1
},
{
- "name": "tests/unit/compat/unittest.py",
+ "name": "docs/cisco.ios.ios_lldp_interfaces_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "727203a3846be41893b78a4b77852a1658925e936fb19539551958a5d8e8fb81",
+ "chksum_sha256": "619db6d298ab8b20cac142e84d3b24258ae70d3b5c092605a4c6ae2fa7d49e12",
"format": 1
},
{
- "name": "tests/unit/requirements.txt",
+ "name": ".isort.cfg",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "49ba996dc4735c3463e9af561344346dfae14bcc1a68096ce78364b377f0df1f",
+ "chksum_sha256": "f287de31c528e7d37475770952855fb25ec053d0bcaedd577091d13807b4c5dc",
"format": 1
},
{
- "name": "tests/unit/mock",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "pyproject.toml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1cb6a45dfa2625123890b93ad7fdc156b063c16e8ae6dba11511a1d1986b0fcc",
"format": 1
},
{
- "name": "tests/unit/mock/procenv.py",
+ "name": ".flake8",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e869c848191bb9586fa25214c452cd18497a737e30ff2747977f8b8d4da620c7",
+ "chksum_sha256": "c3619890addbe81b337523c7d31461089055b267a3665f5f5c93d47fa0dbee96",
"format": 1
},
{
- "name": "tests/unit/mock/__init__.py",
+ "name": ".darglint",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "954a7045c6fa17fddfe80995f7f8251efb6df1a2b05eaf479afca6bbc6dfd4f2",
"format": 1
},
{
- "name": "tests/unit/mock/loader.py",
+ "name": "bindep.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4a016afe1252f4ed74089de5a77c64305a1fb5873aeecdaf695a80203ce5fbcc",
+ "chksum_sha256": "80645079eb025b3a905b4775ac545d080a3d7d35d537c31e04f7197c94315ab5",
"format": 1
},
{
- "name": "tests/unit/mock/path.py",
+ "name": "changelogs",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "changelogs/fragments",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "changelogs/fragments/.keep",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "920ca3acb70a819bba26034101cf1e8497e8a5445f220a4df0cbacca03b21bd7",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/unit/mock/vault_helper.py",
+ "name": "changelogs/config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3bf7834d18bd34473d0f4b898253177229a131f14364874efba584ff985e4a41",
+ "chksum_sha256": "1bb849048d65cc2f9361aa278e580f629a47e0aca570fdb0f34cf4ef55dd332c",
"format": 1
},
{
- "name": "tests/unit/mock/yaml_helper.py",
+ "name": "changelogs/changelog.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fa89194ba60856f51500efdd1f802c5ca3b2e4ded9461d7b88847c427a43a958",
+ "chksum_sha256": "c85e91411a1533ae69219589ad751c388129bcd0059e5b0b49b30fe659317353",
"format": 1
},
{
- "name": "tests/config.yml",
+ "name": "tox.ini",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "de5087316490411841c67aa3307cfdd3acaea09875c9b4dee6852bca7c120764",
+ "chksum_sha256": "beb3313789623e5570d0871f6115ba563a0d92ea75e8e89cbd9f79045b4fe279",
"format": 1
},
{
- "name": "cspell.config.yaml",
+ "name": "CHANGELOG.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e1079e6d02ed34033bf83913e7b66ff7bd042e6d8ed4c113aea31123f557deb5",
+ "chksum_sha256": "90fe1b08554e8c1a683f663f7d7bcf69a6395e4cbf63ae1917a6dd7ca9fdd3cd",
"format": 1
},
{
- "name": ".yamllint",
+ "name": ".gitignore",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "827ef9e031ecdcaf137be239d33ef93fcbbc3611cbb6b30b0e507d0e03373d0e",
+ "chksum_sha256": "179a6d0780422c32653a71b9395a3ecb8b3859346ffa3e38ca3c8d90f8063fd2",
"format": 1
},
{
- "name": "README.md",
+ "name": ".pre-commit-config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4cb49a358b5fbe324bdf6c696b700e11fbcf982a9a8af1b8441d4bdec3fae966",
+ "chksum_sha256": "08940a10222925e0f47d36e2457f1b3e7045ed20b4e72989208b83cda88a2c25",
"format": 1
},
{
- "name": "CHANGELOG.rst",
+ "name": ".prettierignore",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "73d0707aef2ee4cfa83da76000f2b74aedb66a270319e48250c9a94fc9140db7",
+ "chksum_sha256": "87f689e56b912f78012677dba2e0237a65f7b3c1f903006cddefab21bf0689f2",
"format": 1
},
{
@@ -9535,17 +10298,17 @@
"format": 1
},
{
- "name": ".github/CODEOWNERS",
+ "name": ".github/dependabot.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ef39e1ce52397a706ec48f5aa94149c7969436aa32e3e1986d8bc24a7b253366",
+ "chksum_sha256": "11ceee3c57116e9fd08bc423414b1095ff002aa012d6fb325b1a7e24d7e28461",
"format": 1
},
{
- "name": ".github/dependabot.yml",
+ "name": ".github/CODEOWNERS",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "11ceee3c57116e9fd08bc423414b1095ff002aa012d6fb325b1a7e24d7e28461",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
@@ -9556,45 +10319,45 @@
"format": 1
},
{
- "name": ".github/workflows/release.yml",
+ "name": ".github/workflows/codecoverage.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ef4820142e9fd1a600cc6d6c280df7fdeaed69944f6cff4211291a8bfba436b8",
+ "chksum_sha256": "8bbcae622f5e51798b577df290135e846244399c2a6ccbfedac523b38a8330a3",
"format": 1
},
{
- "name": ".github/workflows/ack.yml",
+ "name": ".github/workflows/lint.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3f3dbda41d263cf6a81df57d6eade161adb7d75873552e52e117170d7ae8ab38",
+ "chksum_sha256": "4aeac57f14d48d82a859c822f84a0573419958bc70708f19caa6daac5c771ff9",
"format": 1
},
{
- "name": ".github/workflows/push.yml",
+ "name": ".github/workflows/ack.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "388b7b37935b5ccd2bf17a0d34fdf9ed896c159bde1fb7bc36212d27ebf46d79",
+ "chksum_sha256": "24c6fbafaa69e3e3ee696f2cefa5120794b62cef7e870553dddce8b8af0a127c",
"format": 1
},
{
- "name": ".github/workflows/token_refresh.yml",
+ "name": ".github/workflows/release.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cd1fdb5357c7b4f350b943ec7780fa4f83a786a79db021c2325a4f5a54fb26f4",
+ "chksum_sha256": "c9b7dba505905600bbb9f0d8e9956b7cc20f80edfa742dfdae9395542f417aa1",
"format": 1
},
{
- "name": ".github/workflows/codecoverage.yml",
+ "name": ".github/workflows/push.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c750b13de19c5706653e881d06e83c70bc7916710ee3591c01db42a17033e59a",
+ "chksum_sha256": "345f246b1e078aa3929a09eca7eb37ed4391f0a92c6446f6d6c507a15b45a1a7",
"format": 1
},
{
"name": ".github/workflows/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "48a5888525a48c7f0a6512c90b4225ae5711f8ed0c69732d0e4f1cedebea99a7",
+ "chksum_sha256": "345e7bd3d711ba8194fc11c32bc1935fe6d7916869c7d6908c9e95807f8b1c47",
"format": 1
},
{
@@ -9605,17 +10368,10 @@
"format": 1
},
{
- "name": ".isort.cfg",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "f287de31c528e7d37475770952855fb25ec053d0bcaedd577091d13807b4c5dc",
- "format": 1
- },
- {
- "name": ".darglint",
+ "name": "cspell.config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "954a7045c6fa17fddfe80995f7f8251efb6df1a2b05eaf479afca6bbc6dfd4f2",
+ "chksum_sha256": "e1079e6d02ed34033bf83913e7b66ff7bd042e6d8ed4c113aea31123f557deb5",
"format": 1
}
],
diff --git a/ansible_collections/cisco/ios/MANIFEST.json b/ansible_collections/cisco/ios/MANIFEST.json
index e0b4dce33..99e11f380 100644
--- a/ansible_collections/cisco/ios/MANIFEST.json
+++ b/ansible_collections/cisco/ios/MANIFEST.json
@@ -2,7 +2,7 @@
"collection_info": {
"namespace": "cisco",
"name": "ios",
- "version": "4.6.1",
+ "version": "5.3.0",
"authors": [
"Ansible Network Community (ansible-network)"
],
@@ -28,7 +28,7 @@
"name": "FILES.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "592177fb3b275774a6c21563ed1266cbe4acf7c156bb59c82b974881c6c4c9fd",
+ "chksum_sha256": "c1004e08946bf844b562ad6b5101fdf12a9c2338c282804e88f8a909b30d948c",
"format": 1
},
"format": 1
diff --git a/ansible_collections/cisco/ios/README.md b/ansible_collections/cisco/ios/README.md
index f8d6102b6..da89549a1 100644
--- a/ansible_collections/cisco/ios/README.md
+++ b/ansible_collections/cisco/ios/README.md
@@ -43,6 +43,8 @@ Name | Description
[cisco.ios.ios_bgp_global](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_bgp_global_module.rst)|Resource module to configure BGP.
[cisco.ios.ios_command](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_command_module.rst)|Module to run commands on remote devices.
[cisco.ios.ios_config](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_config_module.rst)|Module to manage configuration sections.
+[cisco.ios.ios_evpn_evi](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_evpn_evi_module.rst)|Resource module to configure L2VPN EVPN EVI.
+[cisco.ios.ios_evpn_global](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_evpn_global_module.rst)|Resource module to configure L2VPN EVPN.
[cisco.ios.ios_facts](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_facts_module.rst)|Module to collect facts from remote devices.
[cisco.ios.ios_hostname](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_hostname_module.rst)|Resource module to configure hostname.
[cisco.ios.ios_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_interfaces_module.rst)|Resource module to configure interfaces.
@@ -55,7 +57,6 @@ Name | Description
[cisco.ios.ios_lldp](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_lldp_module.rst)|(deprecated, removed after 2024-06-01) 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)|Resource module to configure LLDP.
[cisco.ios.ios_lldp_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_lldp_interfaces_module.rst)|Resource module to configure LLDP interfaces.
-[cisco.ios.ios_logging](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_logging_module.rst)|(deprecated, removed after 2023-06-01) Manage logging on network devices
[cisco.ios.ios_logging_global](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_logging_global_module.rst)|Resource module to configure logging.
[cisco.ios.ios_ntp](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_ntp_module.rst)|(deprecated, removed after 2024-01-01) Manages core NTP configuration.
[cisco.ios.ios_ntp_global](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_ntp_global_module.rst)|Resource module to configure NTP.
@@ -72,6 +73,7 @@ Name | Description
[cisco.ios.ios_user](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_user_module.rst)|Module to manage the aggregates of local users.
[cisco.ios.ios_vlans](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_vlans_module.rst)|Resource module to configure VLANs.
[cisco.ios.ios_vrf](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_vrf_module.rst)|Module to configure VRF definitions.
+[cisco.ios.ios_vxlan_vtep](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_vxlan_vtep_module.rst)|Resource module to configure VXLAN VTEP interface.
<!--end collection content-->
diff --git a/ansible_collections/cisco/ios/bindep.txt b/ansible_collections/cisco/ios/bindep.txt
index c5e08a2bb..ba9c980fb 100644
--- a/ansible_collections/cisco/ios/bindep.txt
+++ b/ansible_collections/cisco/ios/bindep.txt
@@ -4,5 +4,3 @@
gcc-c++ [doc test platform:rpm]
python3-devel [test platform:rpm]
python3 [test platform:rpm]
-libssh-devel [build platform:rpm]
-libssh-dev [build platform:dpkg]
diff --git a/ansible_collections/cisco/ios/changelogs/changelog.yaml b/ansible_collections/cisco/ios/changelogs/changelog.yaml
index 4b6a2e8b1..510f6b809 100644
--- a/ansible_collections/cisco/ios/changelogs/changelog.yaml
+++ b/ansible_collections/cisco/ios/changelogs/changelog.yaml
@@ -916,3 +916,152 @@ releases:
- snmpv3_user_render.yml
- update_galaxy.yml
release_date: "2023-06-13"
+ 5.0.0:
+ changes:
+ bugfixes:
+ - ios_facts - Fix facts gathering when memory statistics head is not hexadecimal.
+ (https://github.com/ansible-collections/cisco.ios/issues/776)
+ - ios_snmp_server - Fixes error handling for snmp user when snmp agent is not
+ enabled
+ - ios_static_routes - Fix non vlan entries to have unique group identifier.
+ - ios_static_routes - Fix parsers to parse interface attribute correctly.
+ doc_changes:
+ - ios_facts - Add ansible_net_cpu_utilization.
+ major_changes:
+ - This release removes a previously deprecated modules, and a few attributes
+ from this collection. Refer to **Removed Features** section for details.
+ minor_changes:
+ - ios_facts - Add CPU utilization. (https://github.com/ansible-collections/cisco.ios/issues/779)
+ removed_features:
+ - Deprecated ios_logging module in favor of ios_logging_global.
+ - Deprecated next_hop_self attribute for bgp_address_family with nexthop_self.
+ fragments:
+ - cpu_util.yml
+ - depr_logging.yml
+ - enable_states.yml
+ - facts_fix.yml
+ - snmp_log.yml
+ - snmp_user_bug.yml
+ release_date: "2023-07-05"
+ 5.1.0:
+ changes:
+ bugfixes:
+ - The regex looking for errors in the terminal output was matching anything
+ with '\S+ Error:'. Caused issues with 'show runnning-config' if this string
+ appeared in the output. Updated the regex to require the % anchor.
+ - bgp_address_family - fix deleted string with int concat issue in bgp_address_family.
+ - ios_acls - Fix protocol_options rendering corrects processing of overridden/
+ replaced state.
+ - ios_acls - Fix standard acls rendering.
+ - ios_bgp_address_family - fix rendering of remote_as configuration with period.
+ - ios_logging_global - fix configuration order to configure discriminator before
+ buffer.
+ - ios_prefix_lists - fix deleted state to remove exisiting prefix lists from
+ configuration.
+ - ios_service - Put condition to add `private_config_encryption` in default
+ services
+ deprecated_features:
+ - ospfv2 - removed passive_interface to passive_interfaces that supports a list
+ of interfaces
+ doc_changes:
+ - Fix prefix_lists docs.
+ - Update examples for ospf_interfaces
+ - Update examples for ospfv2
+ - Update examples for ospfv3
+ - ios_acls - update examples and use YAML output in them for better readibility.
+ - ios_command - Fix formatting of examples.
+ minor_changes:
+ - Fixe an issue with some files that doesn't pass the PEP8 sanity check because
+ `type(<obj>) == <type>` is not allowed. We need to use `isinstance(<obj>,<type>)`
+ function in place
+ - ios_snmp_user - update the user part to compare correctly the auth and privacy
+ parts.
+ - ospfv2 - added more tests to improve coverage for the rm_template
+ - ospfv2 - aliased passive_interface to passive_interfaces that supports a list
+ of interfaces
+ - ospfv2 - fix area ranges rendering
+ - ospfv2 - fix passive interfaces rendering
+ - ospfv2 - optimized all the regex to perform better
+ - ospfv2 - optimized the config side code for quicker comparison and execution
+ fragments:
+ - bgp_add_fam_route_maps.yaml
+ - bgp_address_family_bug.yml
+ - bug_ios_service-private_config_encryption.yml
+ - codecov_pr.yml
+ - fix_ospfv2_integration_test.yml
+ - fix_prefix_list_docs.yaml
+ - ios_acls.yaml
+ - ios_acls_fix.yaml
+ - ios_snmp_user.yml
+ - logging_global_order.yaml
+ - pep8_bugfix.yml
+ - prefix_list_fix.yaml
+ - rework_ospfv2.yml
+ - stderr_re_fix.yaml
+ - update_ospf_docs.yaml
+ release_date: "2023-10-04"
+ 5.2.0:
+ changes:
+ bugfixes:
+ - Fix invalid password length not being recognized by the error parser.
+ deprecated_features:
+ - ios_snmp_server - deprecate traps.envmon.fan with traps.envmon.fan_enable
+ - ios_snmp_server - deprecate traps.mpls_vpn with traps.mpls
+ minor_changes:
+ - ios_acls - make remarks ordered and to be applied per ace basis.
+ - ios_acls - remarks in replaced and overridden state to be negated once per
+ ace.
+ - ios_config - Relax restrictions on I(src) parameter so it can be used more
+ like I(lines).
+ - ios_snmp_server - Fix an issue with cbgp2 to take in count correctly the bgp
+ traps
+ - ios_snmp_server - Update the module to manage correctly a lot of traps not
+ take in count
+ fragments:
+ - acl_remaks_fresh.yml
+ - error_parser_bug.yml
+ - fix_config.yaml
+ - ios_snmp_server_changes.yml
+ release_date: "2023-10-27"
+ 5.3.0:
+ changes:
+ bugfixes:
+ - Updated the ios_ping ping module to support size param.
+ - ios_acls - make sequence optional for rendering of standard acls.
+ - ios_bgp_global - Explicitly add neighbor address to every parser.
+ - ios_bgp_global - remote_as not mendatory for neighbors.
+ - ios_vrf - added MDT related keys
+ minor_changes:
+ - Added ios_evpn_evi resource module.
+ - Added ios_evpn_global resource module.
+ - Added ios_vxlan_vtep resource module.
+ - Fixed ios_evpn_evi resource module integration test failure - code to remove
+ VLAN config.
+ - ios_bgp_address_family - Fixed an issue with inherit peer-policy CLI
+ - ios_bgp_address_family - added 'advertise' key
+ - ios_vlans - added vlan config CLI feature.
+ - ios_vrf - added MDT related keys
+ fragments:
+ - add_ios_evpn_evi.yaml
+ - add_ios_evpn_global.yaml
+ - add_ios_vxlan_vtep.yaml
+ - bgp_global_evpn_fix.yml
+ - bgp_global_evpn_fix_2.yml
+ - fix_acls_old.yml
+ - fix_ios_bgp_address_family.yaml
+ - fix_ios_evpn_evi.yaml
+ - fix_ios_vlan_config.yaml
+ - fix_ios_vlans.yaml
+ - fix_ios_vrf.yaml
+ - ios_ping_fix.yml
+ modules:
+ - description: Resource module to configure L2VPN EVPN EVI.
+ name: ios_evpn_evi
+ namespace: ""
+ - description: Resource module to configure L2VPN EVPN.
+ name: ios_evpn_global
+ namespace: ""
+ - description: Resource module to configure VXLAN VTEP interface.
+ name: ios_vxlan_vtep
+ namespace: ""
+ release_date: "2023-11-29"
diff --git a/ansible_collections/cisco/ios/codecov.yml b/ansible_collections/cisco/ios/codecov.yml
index 816cb4409..c77c91a90 100644
--- a/ansible_collections/cisco/ios/codecov.yml
+++ b/ansible_collections/cisco/ios/codecov.yml
@@ -1,7 +1,12 @@
---
codecov:
require_ci_to_pass: true
-comment: false
+comment:
+ layout: " diff, flags, files"
+ behavior: default
+ require_changes: false
+ require_base: false
+ require_head: true
coverage:
status:
patch: false
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_acl_interfaces_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_acl_interfaces_module.rst
index cbdf96bcc..b188ba816 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_acl_interfaces_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_acl_interfaces_module.rst
@@ -442,7 +442,7 @@ Examples
# 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)"
+ # "(NOTE: This will delete all of configured resource module attributes from each configured interface)"
# Before state:
# -------------
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_acls_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_acls_module.rst
index e0b61c7ed..a76156dd6 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_acls_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_acls_module.rst
@@ -3143,6 +3143,8 @@ Parameters
</td>
<td>
<div>The remarks/description of the ACL.</div>
+ <div>The remarks attribute used within an ace with or without a sequence number will produce remarks that are pushed before the ace entry.</div>
+ <div>Remarks entry used as the only key in as the list option will produce non ace specific remarks, these remarks would be pushed at the end of all the aces for an acl.</div>
</td>
</tr>
<tr>
@@ -3880,7 +3882,7 @@ Parameters
<div>The states <em>rendered</em>, <em>gathered</em> and <em>parsed</em> does not perform any change on the device.</div>
<div>The state <em>rendered</em> will transform the configuration in <code>config</code> option to platform specific CLI commands which will be returned in the <em>rendered</em> key within the result. For state <em>rendered</em> active connection to remote host is not required.</div>
<div>The state <em>gathered</em> 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 <em>gathered</em> key within the result.</div>
- <div>The state <em>parsed</em> reads the configuration from <code>running_config</code> option and transforms it into JSON format as per the resource module parameters and the value is returned in the <em>parsed</em> key within the result. The value of <code>running_config</code> option should be the same format as the output of commands <em>show access-list</em> and <em>show running-config | include ip(v6</em>* access-list|remark) executed on device. Config data from both the commands should be kept together one after another for the parsers to pick the commands correctly. For state <em>parsed</em> active connection to remote host is not required.</div>
+ <div>The state <em>parsed</em> reads the configuration from <code>running_config</code> option and transforms it into JSON format as per the resource module parameters and the value is returned in the <em>parsed</em> key within the result. The value of <code>running_config</code> option should be the same format as the output of commands <em>sh running-config | section access-list</em> for all acls related information and <em>sh access-lists | include access list</em> to obtain configuration specific of an empty acls, the following commands are executed on device. Config data from both the commands should be kept together one after another for the parsers to pick the commands correctly. For state <em>parsed</em> active connection to remote host is not required.</div>
<div>The state <em>overridden</em>, modify/add the ACLs defined, deleted all other ACLs.</div>
<div>The state <em>replaced</em>, modify/add only the ACEs of the ACLs defined only. It does not perform any other change on the device.</div>
<div>The state <em>deleted</em>, deletes only the specified ACLs, or all if not specified.</div>
@@ -3910,35 +3912,8 @@ Examples
# Before state:
# -------------
#
- # vios#sh access-lists
- # Extended IP access list 100
- # 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: 100
- aces:
- - sequence: 10
- protocol_options:
- icmp:
- traceroute: true
- state: merged
-
- # After state:
- # ------------
- #
- # Play Execution fails, with error:
- # Cannot update existing sequence 10 of ACLs 100 with state merged.
- # Please use state replaced or overridden.
-
- # Before state:
- # -------------
- #
- # vios#sh access-lists
- # Extended IP access list 110
+ # vios#sh running-config | section access-list
+ # ip access-list extended 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
@@ -3962,6 +3937,12 @@ Examples
protocol_options:
icmp:
traceroute: true
+ source:
+ address: 192.168.3.0
+ wildcard_bits: 255.255.255.0
+ destination:
+ any: true
+ grant: permit
- grant: deny
protocol_options:
tcp:
@@ -3972,7 +3953,7 @@ Examples
host: 198.51.110.0
port_protocol:
eq: telnet
- - name: test
+ - name: extended_acl_1
acl_type: extended
aces:
- grant: deny
@@ -4044,64 +4025,259 @@ Examples
dscp: af11
state: merged
- # Commands fired:
- # ---------------
+ # Task Output
+ # -----------
#
- # - 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
- # - 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
- # - remark remarks for extended ACL 1
- # - remark check ACL
- # - ipv6 access-list R1_TRAFFIC
- # - deny tcp any eq www any eq telnet ack dscp af11
+ # before:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: icmp
+ # 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: '100'
+ # afi: ipv4
+ # commands:
+ # - ip access-list extended 110
+ # - deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack
+ # - 30 permit icmp 192.168.3.0 255.255.255.0 any traceroute
+ # - ip access-list extended extended_acl_1
+ # - 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 standard std_acl
+ # - deny 192.168.1.20
+ # - deny 192.168.2.0 0.0.0.255
+ # - 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
+ # - remark remarks for extended ACL 1
+ # - remark check ACL
+ # - ipv6 access-list R1_TRAFFIC
+ # - deny tcp any eq www any eq telnet ack dscp af11
+ # after:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: icmp
+ # protocol_options:
+ # icmp:
+ # echo: true
+ # sequence: 10
+ # source:
+ # address: 192.0.2.0
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # - destination:
+ # host: 198.51.110.0
+ # port_protocol:
+ # eq: telnet
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 20
+ # source:
+ # host: 198.51.100.0
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: icmp
+ # protocol_options:
+ # icmp:
+ # traceroute: true
+ # sequence: 30
+ # source:
+ # address: 0.0.0.0
+ # wildcard_bits: 255.255.255.0
+ # 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: tcp
+ # 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: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 20
+ # source:
+ # address: 192.0.3.0
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # lt: 20
+ # - remarks:
+ # - remarks for extended ACL 1
+ # - check ACL
+ # 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: tcp
+ # 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: extended_acl_1
+ # - aces:
+ # - grant: deny
+ # sequence: 10
+ # source:
+ # host: 192.168.1.20
+ # - grant: deny
+ # sequence: 20
+ # source:
+ # address: 192.168.2.0
+ # wildcard_bits: 0.0.0.255
+ # acl_type: standard
+ # name: std_acl
+ # afi: ipv4
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # port_protocol:
+ # eq: telnet
+ # dscp: af11
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 10
+ # source:
+ # any: true
+ # port_protocol:
+ # eq: www
+ # name: R1_TRAFFIC
+ # afi: ipv6
# After state:
# ------------
#
- # vios#sh access-lists
- # Standard IP access list std_acl
+ # vios#sh running-config | section access-list
+ # ip access-list standard std_acl
# 10 deny 192.168.1.200
- # 20 deny 192.168.2.0, wildcard bits 0.0.0.255
- # Extended IP access list 100
+ # 20 deny 192.168.2.0 0.0.0.255
+ # ip access-list extended 100
# 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
- # Extended IP access list 110
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # ipv6 access-list R1_TRAFFIC
+ # sequence 10 deny tcp any eq www any eq telnet ack dscp af11
+
+ # vios#show running-config | include ip(v6)* access-list|remark
+ # ip access-list standard std_acl
+ # ip access-list extended extended_acl_1
+ # ip access-list extended 110
+ # ip access-list extended 123
+ # remark remarks for extended ACL 1
+ # remark check ACL
+ # ipv6 access-list R1_TRAFFIC
+
+ # Using merged (update existing ACE - will fail)
+
+ # Before state:
+ # -------------
+ #
+ # vios#sh running-config | section access-list
+ # ip access-list extended 100
+ # 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: 100
+ aces:
+ - sequence: 10
+ protocol_options:
+ icmp:
+ traceroute: true
+ state: merged
+
+ # After state:
+ # ------------
+ #
+ # Play Execution fails, with error:
+ # Cannot update existing sequence 10 of ACLs 100 with state merged.
+ # Please use state replaced or overridden.
# 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
+ # vios#sh running-config | section access-list
+ # ip access-list standard std_acl
+ # 10 deny 192.168.1.200
+ # 20 deny 192.168.2.0 0.0.0.255
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # ip access-list extended R1_TRAFFIC
+ # 10 deny tcp any eq www any eq telnet ack dscp af11
+ # ip access-list extended 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
- name: Replaces device configuration of listed acls with provided configuration
cisco.ios.ios_acls:
@@ -4147,33 +4323,619 @@ Examples
eq: 10
state: replaced
- # Commands fired:
- # ---------------
+ # Task Output
+ # -----------
#
- # - 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
+ # before:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: icmp
+ # protocol_options:
+ # icmp:
+ # traceroute: true
+ # sequence: 10
+ # source:
+ # address: 192.0.2.0
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # - destination:
+ # host: 198.51.110.0
+ # port_protocol:
+ # eq: telnet
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 20
+ # source:
+ # host: 198.51.100.0
+ # 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: tcp
+ # 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: tcp
+ # 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:
+ # any: true
+ # port_protocol:
+ # eq: telnet
+ # dscp: af11
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 10
+ # source:
+ # any: true
+ # port_protocol:
+ # eq: www
+ # acl_type: extended
+ # name: R1_TRAFFIC
+ # - aces:
+ # - grant: deny
+ # sequence: 10
+ # source:
+ # host: 192.168.1.200
+ # - grant: deny
+ # sequence: 20
+ # source:
+ # address: 192.168.2.0
+ # wildcard_bits: 0.0.0.255
+ # acl_type: standard
+ # name: std_acl
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # port_protocol:
+ # eq: www
+ # wildcard_bits: 0.0.0.255
+ # grant: deny
+ # option:
+ # traceroute: true
+ # protocol: tcp
+ # 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
+ # afi: ipv4
+ # commands:
+ # - ip access-list extended 110
+ # - no 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
+ # - no 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack
+ # - 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:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # port_protocol:
+ # eq: www
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # syn: 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: tcp
+ # 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: tcp
+ # 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: 198.51.110.0
+ # port_protocol:
+ # eq: telnet
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # syn: true
+ # sequence: 20
+ # source:
+ # address: 198.51.100.0
+ # port_protocol:
+ # eq: telnet
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # acl_type: extended
+ # name: '150'
+ # - aces:
+ # - destination:
+ # any: true
+ # port_protocol:
+ # eq: telnet
+ # dscp: af11
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 10
+ # source:
+ # any: true
+ # port_protocol:
+ # eq: www
+ # acl_type: extended
+ # name: R1_TRAFFIC
+ # - aces:
+ # - grant: deny
+ # sequence: 10
+ # source:
+ # host: 192.168.1.200
+ # - grant: deny
+ # sequence: 20
+ # source:
+ # address: 192.168.2.0
+ # wildcard_bits: 0.0.0.255
+ # acl_type: standard
+ # name: std_acl
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # port_protocol:
+ # eq: www
+ # wildcard_bits: 0.0.0.255
+ # grant: deny
+ # option:
+ # traceroute: true
+ # protocol: tcp
+ # 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
+ # afi: ipv4
# After state:
# -------------
#
# vios#sh access-lists
- # Standard IP access list std_acl
+ # ip access-list standard 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
+ # 20 deny 192.168.2.0 0.0.0.255
+ # 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
- # Extended IP access list 123
+ # ip access-list extended 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
+ # 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
- # Extended IP access list test
+ # ip access-list extended 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
+ # ipv6 access-list R1_TRAFFIC
+ # sequence 10 deny tcp any eq www any eq telnet ack dscp af11
+
+ # Using replaced - example remarks specific
+
+ # Before state:
+ # -------------
+ #
+ # vios#show running-config | section access-list
+ # ip access-list extended TEST
+ # 10 remark FIRST REMARK BEFORE LINE 10
+ # 10 remark ============
+ # 10 remark ALLOW HOST FROM TEST 10
+ # 10 permit ip host 1.1.1.1 any
+ # 20 remark FIRST REMARK BEFORE LINE 20
+ # 20 remark ============
+ # 20 remark ALLOW HOST remarks AFTER LINE 20
+ # 20 permit ip host 2.2.2.2 any
+ # 30 remark FIRST REMARK BEFORE LINE 30
+ # 30 remark ============
+ # 30 remark ALLOW HOST remarks AFTER LINE 30
+ # 30 permit ip host 3.3.3.3 any
+
+ - name: Replace remarks of ace with sequence 10
+ # check_mode: true
+ cisco.ios.ios_acls:
+ state: replaced
+ config:
+ - acls:
+ - aces:
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - The new first remarks before 10
+ - ============new
+ - The new second remarks before 10
+ sequence: 10
+ source:
+ host: 1.1.1.1
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 20
+ - ============
+ - ALLOW HOST remarks AFTER LINE 20
+ sequence: 20
+ source:
+ host: 2.2.2.2
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 30
+ - ============
+ - ALLOW HOST remarks AFTER LINE 30
+ sequence: 30
+ source:
+ host: 3.3.3.3
+ acl_type: extended
+ name: TEST
+ afi: ipv4
+
+ # Task Output
+ # -----------
+ #
+ # before:
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - FIRST REMARK BEFORE LINE 10
+ # - ===========1=
+ # - ALLOW HOST FROM TEST 10
+ # sequence: 10
+ # source:
+ # host: 1.1.1.1
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - FIRST REMARK BEFORE LINE 20
+ # - ============
+ # - ALLOW HOST remarks AFTER LINE 20
+ # sequence: 20
+ # source:
+ # host: 2.2.2.2
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - FIRST REMARK BEFORE LINE 30
+ # - ============
+ # - ALLOW HOST remarks AFTER LINE 30
+ # sequence: 30
+ # source:
+ # host: 3.3.3.3
+ # acl_type: extended
+ # name: TEST
+ # afi: ipv4
+ # commands:
+ # - ip access-list extended TEST
+ # - no 10 remark
+ # - 10 remark The new first remarks before 10
+ # - 10 remark ============new
+ # - 10 remark The new second remarks before 10
+ # after:
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - The new first remarks before 10
+ # - ============new
+ # - The new second remarks before 10
+ # sequence: 10
+ # source:
+ # host: 1.1.1.1
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - FIRST REMARK BEFORE LINE 20
+ # - ============
+ # - ALLOW HOST remarks AFTER LINE 20
+ # sequence: 20
+ # source:
+ # host: 2.2.2.2
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - FIRST REMARK BEFORE LINE 30
+ # - ============
+ # - ALLOW HOST remarks AFTER LINE 30
+ # sequence: 30
+ # source:
+ # host: 3.3.3.3
+ # acl_type: extended
+ # name: TEST
+ # afi: ipv4
+
+ # After state:
+ # -------------
+ #
+ # foo#show running-config | section access-list
+ # ip access-list extended TEST
+ # 10 remark The new first remarks before 10
+ # 10 remark ============new
+ # 10 remark The new second remarks before 10
+ # 10 permit ip host 1.1.1.1 any
+ # 20 remark FIRST REMARK BEFORE LINE 20
+ # 20 remark ============
+ # 20 remark ALLOW HOST remarks AFTER LINE 20
+ # 20 permit ip host 2.2.2.2 any
+ # 30 remark FIRST REMARK BEFORE LINE 30
+ # 30 remark ============
+ # 30 remark ALLOW HOST remarks AFTER LINE 30
+ # 30 permit ip host 3.3.3.3 any
+
+ # Using replaced - example remarks specific on targeted sequence
+
+ # Before state:
+ # -------------
+ #
+ # vios#show running-config | section access-list
+ # ip access-list extended TEST
+ # 10 permit ip host 1.1.1.1 any
+ # 20 remark FIRST REMARK BEFORE LINE 20
+ # 20 remark ============
+ # 20 remark ALLOW HOST remarks AFTER LINE 20
+ # 20 permit ip host 2.2.2.2 any
+ # 30 remark FIRST REMARK BEFORE LINE 30
+ # 30 remark ============
+ # 30 remark ALLOW HOST remarks AFTER LINE 30
+ # 30 permit ip host 3.3.3.3 any
+
+ - name: Replace remarks of ace with sequence 10
+ # check_mode: true
+ cisco.ios.ios_acls:
+ state: replaced
+ config:
+ - acls:
+ - aces:
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - The new first remarks before 10
+ - ============new
+ - The new second remarks before 10
+ sequence: 10
+ source:
+ host: 1.1.1.1
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 20
+ - ============
+ - ALLOW HOST remarks AFTER LINE 20
+ sequence: 20
+ source:
+ host: 2.2.2.2
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 30
+ - ============
+ - ALLOW HOST remarks AFTER LINE 30
+ sequence: 30
+ source:
+ host: 3.3.3.3
+ acl_type: extended
+ name: TEST
+ afi: ipv4
+
+ # Task Output
+ # -----------
+ #
+ # before:
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # sequence: 10
+ # source:
+ # host: 1.1.1.1
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - FIRST REMARK BEFORE LINE 20
+ # - ============
+ # - ALLOW HOST remarks AFTER LINE 20
+ # sequence: 20
+ # source:
+ # host: 2.2.2.2
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - FIRST REMARK BEFORE LINE 30
+ # - ============
+ # - ALLOW HOST remarks AFTER LINE 30
+ # sequence: 30
+ # source:
+ # host: 3.3.3.3
+ # acl_type: extended
+ # name: TEST
+ # afi: ipv4
+ # commands:
+ # - ip access-list extended TEST
+ # - 10 remark The new first remarks before 10
+ # - 10 remark ============new
+ # - 10 remark The new second remarks before 10
+ # after:
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - The new first remarks before 10
+ # - ============new
+ # - The new second remarks before 10
+ # sequence: 10
+ # source:
+ # host: 1.1.1.1
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - FIRST REMARK BEFORE LINE 20
+ # - ============
+ # - ALLOW HOST remarks AFTER LINE 20
+ # sequence: 20
+ # source:
+ # host: 2.2.2.2
+ # - destination:
+ # any: true
+ # grant: permit
+ # protocol: ip
+ # remarks:
+ # - FIRST REMARK BEFORE LINE 30
+ # - ============
+ # - ALLOW HOST remarks AFTER LINE 30
+ # sequence: 30
+ # source:
+ # host: 3.3.3.3
+ # acl_type: extended
+ # name: TEST
+ # afi: ipv4
+
+ # After state:
+ # -------------
+ #
+ # foo#show running-config | section access-list
+ # ip access-list extended TEST
+ # 10 remark The new first remarks before 10
+ # 10 remark ============new
+ # 10 remark The new second remarks before 10
+ # 10 permit ip host 1.1.1.1 any
+ # 20 remark FIRST REMARK BEFORE LINE 20
+ # 20 remark ============
+ # 20 remark ALLOW HOST remarks AFTER LINE 20
+ # 20 permit ip host 2.2.2.2 any
+ # 30 remark FIRST REMARK BEFORE LINE 30
+ # 30 remark ============
+ # 30 remark ALLOW HOST remarks AFTER LINE 30
+ # 30 permit ip host 3.3.3.3 any
# Using overridden
@@ -4181,19 +4943,19 @@ Examples
# -------------
#
# 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
+ # ip access-list standard std_acl
+ # 10 deny 192.168.1.200
+ # 20 deny 192.168.2.0 0.0.0.255
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # ip access-list extended R1_TRAFFIC
+ # 10 deny tcp any eq www any eq telnet ack dscp af11
+ # ip access-list extended 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
- name: Override device configuration of all acls with provided configuration
cisco.ios.ios_acls:
@@ -4242,97 +5004,416 @@ Examples
eq: 10
state: overridden
- # Commands fired:
- # ---------------
+ # Task Output
+ # -----------
#
- # - 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
+ # before:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: icmp
+ # protocol_options:
+ # icmp:
+ # traceroute: true
+ # sequence: 10
+ # source:
+ # address: 192.0.2.0
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # - destination:
+ # host: 198.51.110.0
+ # port_protocol:
+ # eq: telnet
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 20
+ # source:
+ # host: 198.51.100.0
+ # 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: tcp
+ # 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: tcp
+ # 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:
+ # any: true
+ # port_protocol:
+ # eq: telnet
+ # dscp: af11
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 10
+ # source:
+ # any: true
+ # port_protocol:
+ # eq: www
+ # acl_type: extended
+ # name: R1_TRAFFIC
+ # - aces:
+ # - grant: deny
+ # sequence: 10
+ # source:
+ # host: 192.168.1.200
+ # - grant: deny
+ # sequence: 20
+ # source:
+ # address: 192.168.2.0
+ # wildcard_bits: 0.0.0.255
+ # acl_type: standard
+ # name: std_acl
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # port_protocol:
+ # eq: www
+ # wildcard_bits: 0.0.0.255
+ # grant: deny
+ # option:
+ # traceroute: true
+ # protocol: tcp
+ # 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
+ # afi: ipv4
+ # commands:
+ # - ip access-list extended 110
+ # - no 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack
+ # - no 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 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
+ # - 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
+ # - no ip access-list extended 123
+ # - no ip access-list extended R1_TRAFFIC
+ # - no ip access-list standard std_acl
+ # - no ip access-list extended test
+ # after:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 198.51.110.0
+ # port_protocol:
+ # eq: www
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 20
+ # source:
+ # address: 198.51.100.0
+ # port_protocol:
+ # eq: telnet
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # acl_type: extended
+ # name: '110'
+ # - aces:
+ # - destination:
+ # address: 198.51.110.0
+ # port_protocol:
+ # eq: telnet
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # syn: true
+ # sequence: 10
+ # source:
+ # address: 198.51.100.0
+ # port_protocol:
+ # eq: telnet
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # acl_type: extended
+ # name: '150'
+ # afi: ipv4
# 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
+ # vios#sh running-config | section access-list
+ # 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
+ # 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
+
- # Using Deleted
+ # Using deleted - delete ACL(s)
# 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
+ # ip access-list standard std_acl
+ # 10 deny 192.168.1.200
+ # 20 deny 192.168.2.0 0.0.0.255
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # ip access-list extended extended_acl_1
+ # 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
- name: "Delete ACLs (Note: This won't delete the all configured ACLs)"
cisco.ios.ios_acls:
config:
- afi: ipv4
acls:
- - name: test
+ - name: extended_acl_1
acl_type: extended
- name: 110
- - afi: ipv6
- acls:
- - name: R1_TRAFFIC
state: deleted
- # Commands fired:
- # ---------------
+ # Task Output
+ # -----------
#
- # - no ip access-list extended test
- # - no ip access-list extended 110
- # - no ipv6 access-list R1_TRAFFIC
+ # before:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: icmp
+ # protocol_options:
+ # icmp:
+ # traceroute: true
+ # sequence: 10
+ # source:
+ # address: 192.0.2.0
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # - destination:
+ # host: 198.51.110.0
+ # port_protocol:
+ # eq: telnet
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 20
+ # source:
+ # host: 198.51.100.0
+ # 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: tcp
+ # 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: tcp
+ # 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:
+ # - grant: deny
+ # sequence: 10
+ # source:
+ # host: 192.168.1.200
+ # - grant: deny
+ # sequence: 20
+ # source:
+ # address: 192.168.2.0
+ # wildcard_bits: 0.0.0.255
+ # acl_type: standard
+ # name: std_acl
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # port_protocol:
+ # eq: www
+ # wildcard_bits: 0.0.0.255
+ # grant: deny
+ # option:
+ # traceroute: true
+ # protocol: tcp
+ # 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: extended_acl_1
+ # afi: ipv4
+ # commands:
+ # - no ip access-list extended 110
+ # - no ip access-list extended extended_acl_1
+ # after:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 198.51.101.0
+ # port_protocol:
+ # eq: telnet
+ # wildcard_bits: 0.0.0.255
+ # grant: deny
+ # protocol: tcp
+ # 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: tcp
+ # 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:
+ # - grant: deny
+ # sequence: 10
+ # source:
+ # host: 192.168.1.200
+ # - grant: deny
+ # sequence: 20
+ # source:
+ # address: 192.168.2.0
+ # wildcard_bits: 0.0.0.255
+ # acl_type: standard
+ # name: std_acl
+ # afi: ipv4
# After state:
# -------------
#
- # vios#sh access-lists
- # Standard IP access list std_acl
+ # vios#sh running-config | section access-list
+ # ip access-list standard 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
+ # 20 deny 192.168.2.0 0.0.0.255
+ # ip access-list extended 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
+ # Using deleted - delete ACLs based on AFI
+
# 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
+ # vios#sh running-config | section access-list
+ # ip access-list standard std_acl
+ # 10 deny 192.168.1.200
+ # 20 deny 192.168.2.0 0.0.0.255
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # sequence 10 deny tcp any eq www any eq telnet ack dscp af11
- name: "Delete ACLs based on AFI (Note: This won't delete the all configured ACLs)"
cisco.ios.ios_acls:
@@ -4340,245 +5421,478 @@ Examples
- afi: ipv4
state: deleted
- # Commands fired:
- # ---------------
+ # Task Output
+ # -----------
#
- # - 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
+ # before:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: icmp
+ # protocol_options:
+ # icmp:
+ # traceroute: true
+ # sequence: 10
+ # source:
+ # address: 192.0.2.0
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # - destination:
+ # host: 198.51.110.0
+ # port_protocol:
+ # eq: telnet
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 20
+ # source:
+ # host: 198.51.100.0
+ # 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: tcp
+ # 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: tcp
+ # 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:
+ # - grant: deny
+ # sequence: 10
+ # source:
+ # host: 192.168.1.200
+ # - grant: deny
+ # sequence: 20
+ # source:
+ # address: 192.168.2.0
+ # wildcard_bits: 0.0.0.255
+ # acl_type: standard
+ # name: std_acl
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # port_protocol:
+ # eq: www
+ # wildcard_bits: 0.0.0.255
+ # grant: deny
+ # option:
+ # traceroute: true
+ # protocol: tcp
+ # 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
+ # afi: ipv4
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # port_protocol:
+ # eq: telnet
+ # dscp: af11
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 10
+ # source:
+ # any: true
+ # port_protocol:
+ # eq: www
+ # name: R1_TRAFFIC
+ # afi: ipv6
+ # commands:
+ # - no ip access-list extended 110
+ # - no ip access-list extended 123
+ # - no ip access-list standard std_acl
+ # - no ip access-list extended test
+ # after:
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # port_protocol:
+ # eq: telnet
+ # dscp: af11
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 10
+ # source:
+ # any: true
+ # port_protocol:
+ # eq: www
+ # name: R1_TRAFFIC
+ # afi: ipv6
# After state:
# -------------
#
- # vios#sh access-lists
- # IPv6 access list R1_TRAFFIC
- # deny tcp any eq www any eq telnet ack dscp af11 sequence 10
+ # vios#sh running-config | section access-list
+ # ipv6 access-list R1_TRAFFIC
+ # sequence 10 deny tcp any eq www any eq telnet ack dscp af11
+
- # Using Deleted without any config passed
- #"(NOTE: This will delete all of configured ACLs)"
+ # Using deleted - delete all 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
+ # ip access-list standard std_acl
+ # 10 deny 192.168.1.200
+ # 20 deny 192.168.2.0 0.0.0.255
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # sequence 10 deny tcp any eq www any eq telnet ack dscp af11
- - name:
- "Delete ALL of configured ACLs (Note: This WILL delete the all configured
- ACLs)"
+ - name: Delete ALL of configured ACLs
cisco.ios.ios_acls:
state: deleted
- # Commands fired:
- # ---------------
+ # Task Output
+ # -----------
#
- # - 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
+ # before:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: icmp
+ # protocol_options:
+ # icmp:
+ # traceroute: true
+ # sequence: 10
+ # source:
+ # address: 192.0.2.0
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # - destination:
+ # host: 198.51.110.0
+ # port_protocol:
+ # eq: telnet
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 20
+ # source:
+ # host: 198.51.100.0
+ # 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: tcp
+ # 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: tcp
+ # 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:
+ # - grant: deny
+ # sequence: 10
+ # source:
+ # host: 192.168.1.200
+ # - grant: deny
+ # sequence: 20
+ # source:
+ # address: 192.168.2.0
+ # wildcard_bits: 0.0.0.255
+ # acl_type: standard
+ # name: std_acl
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # port_protocol:
+ # eq: www
+ # wildcard_bits: 0.0.0.255
+ # grant: deny
+ # option:
+ # traceroute: true
+ # protocol: tcp
+ # 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
+ # afi: ipv4
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # port_protocol:
+ # eq: telnet
+ # dscp: af11
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 10
+ # source:
+ # any: true
+ # port_protocol:
+ # eq: www
+ # name: R1_TRAFFIC
+ # afi: ipv6
+ # commands:
+ # - 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: []
# After state:
# -------------
#
- # vios#sh access-lists
+ # vios#sh running-config | section access-list
- # Using Gathered
+
+ # Using gathered
# Before state:
# -------------
#
# vios#sh access-lists
- # Standard IP access list std_acl
+ # ip access-list standard 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
+ # 20 deny 192.168.2.0 0.0.0.255
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # ip access-list extended 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
+ # ipv6 access-list R1_TRAFFIC
+ # sequence 10 deny tcp any eq www any eq telnet ack dscp af11
- - name: Gather listed acls with provided configurations
+ - name: Gather ACLs configuration from target device
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"
- # }
- # ]
+ # before:
+ # - acls:
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # wildcard_bits: 0.0.0.255
+ # dscp: ef
+ # grant: deny
+ # protocol: icmp
+ # protocol_options:
+ # icmp:
+ # traceroute: true
+ # sequence: 10
+ # source:
+ # address: 192.0.2.0
+ # wildcard_bits: 0.0.0.255
+ # ttl:
+ # eq: 10
+ # - destination:
+ # host: 198.51.110.0
+ # port_protocol:
+ # eq: telnet
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 20
+ # source:
+ # host: 198.51.100.0
+ # 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: tcp
+ # 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: tcp
+ # 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:
+ # - grant: deny
+ # sequence: 10
+ # source:
+ # host: 192.168.1.200
+ # - grant: deny
+ # sequence: 20
+ # source:
+ # address: 192.168.2.0
+ # wildcard_bits: 0.0.0.255
+ # acl_type: standard
+ # name: std_acl
+ # - aces:
+ # - destination:
+ # address: 192.0.3.0
+ # port_protocol:
+ # eq: www
+ # wildcard_bits: 0.0.0.255
+ # grant: deny
+ # option:
+ # traceroute: true
+ # protocol: tcp
+ # 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
+ # afi: ipv4
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # port_protocol:
+ # eq: telnet
+ # dscp: af11
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 10
+ # source:
+ # any: true
+ # port_protocol:
+ # eq: www
+ # name: R1_TRAFFIC
+ # afi: ipv6
- # Using Rendered
+ # Using rendered
- - name: Rendered the provided configuration with the existing running configuration
+ - name: Render the provided configuration into platform specific configuration lines
cisco.ios.ios_acls:
config:
- afi: ipv4
@@ -4625,12 +5939,11 @@ Examples
# 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"
- # ]
+ # 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
@@ -4648,39 +5961,26 @@ Examples
# 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"
- # }
- # ]
+ # parsed:
+ # - acls:
+ # - aces:
+ # - destination:
+ # any: true
+ # port_protocol:
+ # eq: telnet
+ # dscp: af11
+ # grant: deny
+ # protocol: tcp
+ # protocol_options:
+ # tcp:
+ # ack: true
+ # sequence: 10
+ # source:
+ # any: true
+ # port_protocol:
+ # eq: www
+ # name: R1_TRAFFIC
+ # afi: ipv6
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_banner_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_banner_module.rst
index 372179412..75e1affa7 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_banner_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_banner_module.rst
@@ -143,7 +143,7 @@ Examples
- name: Configure banner from file
cisco.ios.ios_banner:
banner: motd
- text: "{{ lookup('file', './config_partial/raw_banner.cfg') }}" # Use unix formatted text files (LF not CRLF) to avoid idempotency issues.
+ text: "{{ lookup('file', './config_partial/raw_banner.cfg') }}" # Use unix formatted text files (LF not CRLF) to avoid idempotency issues.
state: present
- name: Configure the login banner using delimiter
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_address_family_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_address_family_module.rst
index b6a4100bc..25fb233ac 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_address_family_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_address_family_module.rst
@@ -70,6 +70,66 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="6">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>advertise</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Configure path advertise/export to other address-family</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>afi</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>l2vpn</li>
+ </ul>
+ </td>
+ <td>
+ <div>Address family for VRF advertise/export</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>safi</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>evpn</li>
+ </ul>
+ </td>
+ <td>
+ <div>Advertise/export prefixes to address family</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="6">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>afi</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -3101,7 +3161,7 @@ Parameters
<b>number</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
- <span style="color: purple">integer</span>
+ <span style="color: purple">string</span>
</div>
</td>
<td>
@@ -3327,29 +3387,6 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>next_hop_self</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">boolean</span>
- </div>
- </td>
- <td>
- <ul style="margin: 0; padding: 0"><b>Choices:</b>
- <li>no</li>
- <li>yes</li>
- </ul>
- </td>
- <td>
- <div>Disable the next hop calculation for this neighbor</div>
- <div>This option is DEPRECATED and is replaced with nexthop_self which accepts dict as input this attribute will be removed after 2023-06-01.</div>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder"></td>
- <td class="elbow-placeholder"></td>
- <td class="elbow-placeholder"></td>
- <td colspan="5">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>next_hop_unchanged</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -4049,7 +4086,7 @@ Parameters
<b>remote_as</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
- <span style="color: purple">integer</span>
+ <span style="color: purple">string</span>
</div>
</td>
<td>
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_global_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_global_module.rst
index b753c10fe..ad461f776 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_global_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_global_module.rst
@@ -9407,6 +9407,7 @@ Parameters
<ul style="margin: 0; padding: 0"><b>Choices:</b>
<li><div style="color: blue"><b>merged</b>&nbsp;&larr;</div></li>
<li>replaced</li>
+ <li>overridden</li>
<li>deleted</li>
<li>purged</li>
<li>gathered</li>
@@ -9416,10 +9417,11 @@ Parameters
</td>
<td>
<div>The state the configuration should be left in</div>
+ <div>The module have declaratively similar behavior for replaced and overridden state.</div>
<div>The states <em>rendered</em>, <em>gathered</em> and <em>parsed</em> does not perform any change on the device.</div>
<div>The state <em>rendered</em> will transform the configuration in <code>config</code> option to platform specific CLI commands which will be returned in the <em>rendered</em> key within the result. For state <em>rendered</em> active connection to remote host is not required.</div>
<div>The state <em>gathered</em> 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 <em>gathered</em> key within the result.</div>
- <div>The state <em>parsed</em> reads the configuration from <code>running_config</code> option and transforms it into JSON format as per the resource module parameters and the value is returned in the <em>parsed</em> key within the result. The value of <code>running_config</code> option should be the same format as the output of command <em>show running-config | include ip route|ipv6 route</em> executed on device. For state <em>parsed</em> active connection to remote host is not required.</div>
+ <div>The state <em>parsed</em> reads the configuration from <code>running_config</code> option and transforms it into JSON format as per the resource module parameters and the value is returned in the <em>parsed</em> key within the result. The value of <code>running_config</code> option should be the same format as the output of command <em>show running-config | section ^router bgp</em> executed on device. For state <em>parsed</em> active connection to remote host is not required.</div>
</td>
</tr>
</table>
@@ -9662,6 +9664,7 @@ Examples
# networks:
# - address: 192.0.2.2
# - address: 192.0.2.3
+ #
# commands:
# - router bgp 65000
# - no bgp bestpath compare-routerid
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_command_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_command_module.rst
index 305641a9a..51437902e 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_command_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_command_module.rst
@@ -141,7 +141,7 @@ Examples
- name: Run show version on remote devices
cisco.ios.ios_command:
- commands: show version'
+ commands: show version
# output-
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_evpn_evi_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_evpn_evi_module.rst
new file mode 100644
index 000000000..9c19c8cdf
--- /dev/null
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_evpn_evi_module.rst
@@ -0,0 +1,791 @@
+.. _cisco.ios.ios_evpn_evi_module:
+
+
+**********************
+cisco.ios.ios_evpn_evi
+**********************
+
+**Resource module to configure L2VPN EVPN EVI.**
+
+
+Version added: 5.3.0
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+- This module provides declarative management of L2VPN EVPN EVI on Cisco IOS network devices.
+
+
+
+
+Parameters
+----------
+
+.. raw:: html
+
+ <table border=0 cellpadding=0 class="documentation-table">
+ <tr>
+ <th colspan="4">Parameter</th>
+ <th>Choices/<font color="blue">Defaults</font></th>
+ <th width="100%">Comments</th>
+ </tr>
+ <tr>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>config</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>A dictionary of L2VPN Ethernet Virtual Private Network (EVPN) EVI configuration</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>default_gateway</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Default Gateway parameters</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>advertise</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Advertise Default Gateway MAC/IP routes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>disable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Disable advertisement of Default Gateway MAC/IP routes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable advertisement of Default Gateway MAC/IP routes</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>encapsulation</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>vxlan</b>&nbsp;&larr;</div></li>
+ </ul>
+ </td>
+ <td>
+ <div>EVPN encapsulation type</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>evi</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ / <span style="color: red">required</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>EVPN instance value</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>ip</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>IP parameters</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>local_learning</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>IP local learning</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>disable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Disable IP local learning</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable IP local learning</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>replication_type</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>ingress</li>
+ <li>static</li>
+ </ul>
+ </td>
+ <td>
+ <div>Method for replicating BUM traffic</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>route_distinguisher</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>EVPN Route Distinguisher</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>running_config</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>This option is used only with state <em>parsed</em>.</div>
+ <div>The value of this option should be the output received from the IOS device by executing the command <b>sh running-config nve | section ^l2vpn evpn$</b>.</div>
+ <div>The state <em>parsed</em> reads the configuration from <code>running_config</code> option and transforms it into Ansible structured data as per the resource module&#x27;s argspec and the value is then returned in the <em>parsed</em> key within the result.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>state</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>merged</b>&nbsp;&larr;</div></li>
+ <li>replaced</li>
+ <li>overridden</li>
+ <li>deleted</li>
+ <li>gathered</li>
+ <li>rendered</li>
+ <li>parsed</li>
+ </ul>
+ </td>
+ <td>
+ <div>The state the configuration should be left in</div>
+ </td>
+ </tr>
+ </table>
+ <br/>
+
+
+Notes
+-----
+
+.. note::
+ - Tested against Cisco IOS device with Version 17.13.01 on Cat9k on CML.
+ - This module works with connection ``network_cli``. See https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html
+
+
+
+Examples
+--------
+
+.. code-block:: yaml
+
+ # Using state merged
+
+ # Before state:
+ # -------------
+ # l2vpn evpn instance 101 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # !
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # !
+ # l2vpn evpn instance 201 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # !
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+
+ # - name: Merge provided configuration with device configuration
+ # cisco.ios.ios_evpn_evi:
+ # config:
+ # - evi: 101
+ # replication_type: ingress
+ # route_distinguisher: '1:1'
+ # default_gateway:
+ # advertise:
+ # enable: False
+ # ip:
+ # local_learning:
+ # enable: True
+ #
+ # - evi: 202
+ # replication_type: static
+ # default_gateway:
+ # advertise:
+ # enable: True
+ # ip:
+ # local_learning:
+ # disable: True
+ # state: merged
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "l2vpn evpn instance 101 vlan-based",
+ # "ip local-learning enable",
+ # "replication-type ingress",
+ # "rd 1:1",
+ # "l2vpn evpn instance 202 vlan-based",
+ # "default-gateway advertise enable",
+ # "ip local-learning disable",
+ # "replication-type static"
+ # ],
+
+ # After state:
+ # ------------
+ # l2vpn evpn instance 101 vlan-based
+ # encapsulation vxlan
+ # rd 1:1
+ # replication-type ingress
+ # ip local-learning enable
+ # !
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # !
+ # l2vpn evpn instance 201 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # !
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # ip local-learning disable
+ # default-gateway advertise enable
+
+
+ # Using state replaced
+
+ # Before state:
+ # -------------
+ # l2vpn evpn instance 101 vlan-based
+ # encapsulation vxlan
+ # rd 1:1
+ # replication-type ingress
+ # ip local-learning enable
+ # !
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # !
+ # l2vpn evpn instance 201 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # !
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # ip local-learning disable
+ # default-gateway advertise enable
+
+ # - name: Replaces the device configuration with the provided configuration
+ # cisco.ios.ios_evpn_evi:
+ # config:
+ # - evi: 101
+ # replication_type: ingress
+ # default_gateway:
+ # advertise:
+ # enable: True
+ # - evi: 202
+ # replication_type: ingress
+ # state: replaced
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "l2vpn evpn instance 101 vlan-based",
+ # "default-gateway advertise enable",
+ # "no ip local-learning enable",
+ # "no rd 1:1",
+ # "l2vpn evpn instance 202 vlan-based",
+ # "no default-gateway advertise enable",
+ # "no ip local-learning disable",
+ # "replication-type ingress"
+ # ],
+
+ # After state:
+ # ------------
+ # l2vpn evpn instance 101 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # default-gateway advertise enable
+ # !
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # !
+ # l2vpn evpn instance 201 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # !
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+
+ # Using state overridden
+
+ # Before state:
+ # -------------
+ # l2vpn evpn instance 101 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # default-gateway advertise enable
+ # !
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # !
+ # l2vpn evpn instance 201 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # !
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+
+ # - name: Override the device configuration with provided configuration
+ # cisco.ios.ios_evpn_evi:
+ # config:
+ # - evi: 101
+ # replication_type: ingress
+ # default_gateway:
+ # advertise:
+ # enable: True
+ # - evi: 202
+ # replication_type: static
+ # default_gateway:
+ # advertise:
+ # enable: True
+ # state: overridden
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "no l2vpn evpn instance 102 vlan-based",
+ # "no l2vpn evpn instance 201 vlan-based",
+ # "l2vpn evpn instance 202 vlan-based",
+ # "default-gateway advertise enable",
+ # "replication-type static"
+ # ],
+
+ # After state:
+ # ------------
+ # l2vpn evpn instance 101 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # default-gateway advertise enable
+ # !
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # default-gateway advertise enable
+
+
+ # Using state Deleted
+
+ # Before state:
+ # -------------
+ # l2vpn evpn instance 101 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # default-gateway advertise enable
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # default-gateway advertise enable
+
+ # - name: "Delete the given EVI(s)"
+ # cisco.ios.ios_evpn_evi:
+ # config:
+ # - evi: 101
+ # state: deleted
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "no l2vpn evpn instance 101 vlan-based"
+ # ],
+
+ # After state:
+ # -------------
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # default-gateway advertise enable
+
+ # Using state Deleted without any config passed
+
+ # Before state:
+ # -------------
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # default-gateway advertise enable
+
+ # - name: "Delete ALL EVIs"
+ # cisco.ios.ios_evpn_evi:
+ # state: deleted
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "no l2vpn evpn instance 102 vlan-based",
+ # "no l2vpn evpn instance 202 vlan-based"
+ # ],
+
+ # After state:
+ # -------------
+ # !
+
+ # Using gathered
+
+ # Before state:
+ # -------------
+ #
+ # l2vpn evpn instance 101 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # !
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # !
+ # l2vpn evpn instance 201 vlan-based
+ # encapsulation vxlan
+ # replication-type static
+ # !
+ # l2vpn evpn instance 202 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+
+ # - name: Gather facts for evpn_evi
+ # cisco.ios.ios_evpn_evi:
+ # config:
+ # state: gathered
+
+ # Task Output:
+ # ------------
+ #
+ # gathered:
+ # - evi: 101
+ # encapsulation: vxlan
+ # replication_type: static
+ # - evi: 102
+ # encapsulation: vxlan
+ # replication_type: ingress
+ # - evi: 201
+ # encapsulation: vxlan
+ # replication_type: static
+ # - evi: 202
+ # encapsulation: vxlan
+ # replication_type: ingress
+
+ # Using Rendered
+
+ # - name: Rendered the provided configuration with the existing running configuration
+ # cisco.ios.ios_evpn_evi:
+ # config:
+ # - evi: 101
+ # replication_type: ingress
+ # default_gateway:
+ # advertise:
+ # enable: True
+ # - evi: 202
+ # replication_type: ingress
+ # state: rendered
+
+ # Task Output:
+ # ------------
+ #
+ # rendered:
+ # - l2vpn evpn instance 101 vlan-based
+ # - default-gateway advertise enable
+ # - replication-type ingress
+ # - l2vpn evpn instance 202 vlan-based
+ # - replication-type ingress
+
+
+ # Using parsed
+
+ # File: parsed.cfg
+ # ----------------
+ #
+ # l2vpn evpn instance 101 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # default-gateway advertise enable
+ # !
+ # l2vpn evpn instance 102 vlan-based
+ # encapsulation vxlan
+ # replication-type ingress
+ # !
+
+ # - name: Parse the commands for provided configuration
+ # cisco.ios.ios_evpn_evi:
+ # running_config: "{{ lookup('file', 'parsed.cfg') }}"
+ # state: parsed
+
+ # Task Output:
+ # ------------
+ #
+ # parsed:
+ # - evi: 101
+ # encapsulation: vxlan
+ # replication_type: ingress
+ # default_gateway:
+ # advertise:
+ # enable: true
+ # - evi: 102
+ # encapsulation: vxlan
+ # replication_type: ingress
+
+
+
+Return Values
+-------------
+Common return values are documented `here <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module:
+
+.. raw:: html
+
+ <table border=0 cellpadding=0 class="documentation-table">
+ <tr>
+ <th colspan="1">Key</th>
+ <th>Returned</th>
+ <th width="100%">Description</th>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>after</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when changed</td>
+ <td>
+ <div>The resulting configuration after module execution.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>before</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>merged</code>, <code>replaced</code>, <code>overridden</code>, <code>deleted</code> or <code>purged</code></td>
+ <td>
+ <div>The configuration prior to the module execution.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>commands</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>merged</code>, <code>replaced</code>, <code>overridden</code>, <code>deleted</code> or <code>purged</code></td>
+ <td>
+ <div>The set of commands pushed to the remote device.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;l2vpn evpn instance 101 vlan-based&#x27;, &#x27;encapsulation vxlan&#x27;, &#x27;replication-type ingress&#x27;]</div>
+ </td>
+ </tr>
+ </table>
+ <br/><br/>
+
+
+Status
+------
+
+
+Authors
+~~~~~~~
+
+- Padmini Priyadarshini Sivaraj (@PadminiSivaraj)
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_evpn_global_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_evpn_global_module.rst
new file mode 100644
index 000000000..e9b71bbbd
--- /dev/null
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_evpn_global_module.rst
@@ -0,0 +1,721 @@
+.. _cisco.ios.ios_evpn_global_module:
+
+
+*************************
+cisco.ios.ios_evpn_global
+*************************
+
+**Resource module to configure L2VPN EVPN.**
+
+
+Version added: 5.3.0
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+- This module provides declarative management of L2VPN EVPN on Cisco IOS network devices.
+
+
+
+
+Parameters
+----------
+
+.. raw:: html
+
+ <table border=0 cellpadding=0 class="documentation-table">
+ <tr>
+ <th colspan="4">Parameter</th>
+ <th>Choices/<font color="blue">Defaults</font></th>
+ <th width="100%">Comments</th>
+ </tr>
+ <tr>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>config</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>A dictionary of L2VPN Ethernet Virtual Private Network (EVPN) configuration</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>default_gateway</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Default gateway parameters</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>advertise</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Advertise Default Gateway MAC/IP routes</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>flooding_suppression</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Suppress flooding of broadcast, multicast, and/or unknown unicast packets</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>address_resolution</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Suppress flooding of Address Resolution and Neighbor Discovery Protocol packets</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>disable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Disable flooding suppression</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>ip</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>IP parameters</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>local_learning</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>IP local learning</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>disable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Disable IP local learning</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>replication_type</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>ingress</li>
+ <li>static</li>
+ </ul>
+ </td>
+ <td>
+ <div>Method for replicating BUM traffic</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>route_target</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Route Target VPN Extended Communities</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>auto</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Automatically set a route-target</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vni</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Set vni-based route-target</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>router_id</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>EVPN router ID</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>running_config</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>This option is used only with state <em>parsed</em>.</div>
+ <div>The value of this option should be the output received from the IOS device by executing the command <b>sh running-config nve | section ^l2vpn evpn$</b>.</div>
+ <div>The state <em>parsed</em> reads the configuration from <code>running_config</code> option and transforms it into Ansible structured data as per the resource module&#x27;s argspec and the value is then returned in the <em>parsed</em> key within the result.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>state</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>merged</b>&nbsp;&larr;</div></li>
+ <li>replaced</li>
+ <li>overridden</li>
+ <li>deleted</li>
+ <li>gathered</li>
+ <li>rendered</li>
+ <li>parsed</li>
+ </ul>
+ </td>
+ <td>
+ <div>The state the configuration should be left in</div>
+ </td>
+ </tr>
+ </table>
+ <br/>
+
+
+Notes
+-----
+
+.. note::
+ - Tested against Cisco IOS device with Version 17.13.01 on Cat9k on CML.
+ - This module works with connection ``network_cli``. See https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html
+
+
+
+Examples
+--------
+
+.. code-block:: yaml
+
+ # Using merged
+
+ # Before state:
+ # -------------
+ #
+ # Leaf-01#show running-config nve | section ^l2vpn evpn$
+ # l2vpn evpn
+ # replication-type static
+ # router-id Loopback1
+ # default-gateway advertise
+
+ - name: Merge provided configuration with device configuration
+ cisco.ios.ios_evpn_global:
+ config:
+ replication_type: ingress
+ route_target:
+ auto:
+ vni: true
+ default_gateway:
+ advertise: false
+ ip:
+ local_learning:
+ disable: true
+ flooding_suppression:
+ address_resolution:
+ disable: false
+ state: merged
+
+ # Task Output
+ # -----------
+ #
+ # before:
+ # - replication_type: static
+ # router_id: Loopback1
+ # default_gateway:
+ # advertise: true
+ # commands:
+ # - l2vpn evpn
+ # no default-gateway advertise
+ # replication-type ingress
+ # route-target auto vni
+ # ip local-learning disable
+ # after:
+ # - replication_type: ingress
+ # router_id: Loopback1
+ # route_target:
+ # auto:
+ # vni: true
+ # ip:
+ # local_learning:
+ # disable: true
+
+ # After state:
+ # ------------
+ #
+ # Leaf-01#show running-config nve | section ^l2vpn evpn$
+ # l2vpn evpn
+ # replication-type ingress
+ # router-id Loopback1
+ # ip local-learning disable
+ # route-target auto vni
+
+ # Using replaced
+
+ # Before state:
+ # -------------
+ #
+ # Leaf-01#show running-config nve | section ^l2vpn evpn$
+ # l2vpn evpn
+ # replication-type ingress
+ # router-id Loopback1
+ # ip local-learning disable
+ # route-target auto vni
+
+ - name: Replaces device configuration for EVPN global with provided configuration
+ cisco.ios.ios_evpn_global:
+ config:
+ replication_type: static
+ router_id: Loopback2
+ default_gateway:
+ advertise: true
+ flooding_suppression:
+ address_resolution:
+ disable: true
+ state: replaced
+
+ # Task Output
+ # -----------
+ #
+ # before:
+ # - replication_type: ingress
+ # router_id: Loopback1
+ # route_target:
+ # auto:
+ # vni: true
+ # ip:
+ # local_learning:
+ # disable: true
+ # commands:
+ # - l2vpn evpn
+ # - default-gateway advertise
+ # - flooding-suppression address-resolution disable
+ # - no ip local-learning disable
+ # - replication-type static
+ # - no route-target auto vni
+ # - router-id Loopback2
+ # after:
+ # - replication_type: ingress
+ # router_id: Loopback2
+ # default_gateway:
+ # advertise: true
+ # flooding_suppression:
+ # address_resolution:
+ # disable: true
+
+ # After state:
+ # ------------
+ #
+ # Leaf-01#show running-config nve | section ^l2vpn evpn$
+ # l2vpn evpn
+ # replication-type static
+ # flooding-suppression address-resolution disable
+ # router-id Loopback2
+ # default-gateway advertise
+
+ # Using Deleted
+
+ # Before state:
+ # -------------
+ #
+ # Leaf-01#show running-config nve | section ^l2vpn evpn$
+ # l2vpn evpn
+ # replication-type static
+ # flooding-suppression address-resolution disable
+ # router-id Loopback2
+ # default-gateway advertise
+
+ - name: Delete EVPN global
+ cisco.ios.ios_evpn_global:
+ config:
+ state: deleted
+
+ # before:
+ # - replication_type: ingress
+ # router_id: Loopback2
+ # default_gateway:
+ # advertise: true
+ # flooding_suppression:
+ # address_resolution:
+ # disable: true
+ # commands:
+ # - no l2vpn evpn
+ # after:
+ #
+
+ # After state:
+ # -------------
+ #
+ # Leaf-01#show running-config nve | section ^l2vpn evpn$
+ #
+
+ # Using gathered
+
+ # Before state:
+ # -------------
+ #
+ # Leaf-01#show running-config nve | section ^l2vpn evpn$
+ # l2vpn evpn
+ # replication-type ingress
+ # router-id Loopback1
+ # ip local-learning disable
+ # route-target auto vni
+
+ - name: Gather facts of l2vpn evpn
+ cisco.ios.ios_evpn_global:
+ config:
+ state: gathered
+
+ # Task Output:
+ # ------------
+ #
+ # gathered:
+ # - replication_type: ingress
+ # route_target:
+ # auto:
+ # vni: true
+ # router_id: Loopback1
+ # ip:
+ # local_learning:
+ # disable: true
+
+ # Using rendered
+
+ - name: Render the commands for provided configuration
+ cisco.ios.ios_evpn_global:
+ config:
+ replication_type: static
+ route_target:
+ auto:
+ vni: true
+ state: rendered
+
+ # Task Output:
+ # ------------
+ #
+ # rendered:
+ # - l2vpn evpn
+ # - replication-type static
+ # - route-target auto vni
+
+ # Using parsed
+
+ # File: parsed.cfg
+ # ----------------
+ #
+ # l2vpn evpn
+ # replication-type ingress
+ # router-id Loopback1
+ # default-gateway advertise
+ # route-target auto vni
+
+ - name: Parse the provided configuration
+ cisco.ios.ios_evpn_global:
+ running_config: "{{ lookup('file', 'parsed.cfg') }}"
+ state: parsed
+
+ # Task Output:
+ # ------------
+ #
+ # parsed:
+ # - replication_type: ingress
+ # route_target:
+ # auto:
+ # vni: true
+ # router_id: Loopback1
+ # default_gateway:
+ # advertise: true
+
+
+
+Return Values
+-------------
+Common return values are documented `here <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module:
+
+.. raw:: html
+
+ <table border=0 cellpadding=0 class="documentation-table">
+ <tr>
+ <th colspan="1">Key</th>
+ <th>Returned</th>
+ <th width="100%">Description</th>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>after</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when changed</td>
+ <td>
+ <div>The resulting configuration after module execution.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>before</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>merged</code>, <code>replaced</code>, <code>overridden</code>, or <code>deleted</code></td>
+ <td>
+ <div>The configuration prior to the module execution.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>commands</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>merged</code>, <code>replaced</code>, <code>overridden</code>, or <code>deleted</code></td>
+ <td>
+ <div>The set of commands pushed to the remote device.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;l2vpn evpn&#x27;, &#x27;replication-type ingress&#x27;, &#x27;router_id Loopback1&#x27;]</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>gathered</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>gathered</code></td>
+ <td>
+ <div>Facts about the network resource gathered from the remote device as structured data.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>parsed</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>parsed</code></td>
+ <td>
+ <div>The device native config provided in <em>running_config</em> option parsed into structured data as per module argspec.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>rendered</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>rendered</code></td>
+ <td>
+ <div>The provided configuration in the task rendered in device-native format (offline).</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;l2vpn evpn&#x27;, &#x27;replication-type static&#x27;, &#x27;route-target auto vni&#x27;]</div>
+ </td>
+ </tr>
+ </table>
+ <br/><br/>
+
+
+Status
+------
+
+
+Authors
+~~~~~~~
+
+- Padmini Priyadarshini Sivaraj (@PadminiSivaraj)
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_facts_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_facts_module.rst
index cfa039387..39b210f19 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_facts_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_facts_module.rst
@@ -228,6 +228,21 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<tr>
<td colspan="1">
<div class="ansibleOptionAnchor" id="return-"></div>
+ <b>ansible_net_cpu_utilization</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when hardware is configured</td>
+ <td>
+ <div>The current CPU utilization of the device</div>
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
<b>ansible_net_filesystems</b>
<a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
<div style="font-size: small">
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_hostname_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_hostname_module.rst
index 5044ba541..54c459188 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_hostname_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_hostname_module.rst
@@ -249,7 +249,7 @@ Examples
# Before state:
# -------------
- #router-ios#show running-config | section ^hostname
+ # router-ios#show running-config | section ^hostname
# hostname RouterTest
# Gathered play:
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_module.rst
index 0ad8a6917..f2e021efa 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_module.rst
@@ -115,6 +115,7 @@ Parameters
<ul style="margin: 0; padding: 0"><b>Choices:</b>
<li><div style="color: blue"><b>merged</b>&nbsp;&larr;</div></li>
<li>replaced</li>
+ <li>overridden</li>
<li>deleted</li>
<li>rendered</li>
<li>parsed</li>
@@ -123,6 +124,7 @@ Parameters
</td>
<td>
<div>The state the configuration should be left in</div>
+ <div>The module have declaratively similar behavior for replaced and overridden state.</div>
<div>The states <em>rendered</em>, <em>gathered</em> and <em>parsed</em> does not perform any change on the device.</div>
<div>The state <em>rendered</em> will transform the configuration in <code>config</code> option to platform specific CLI commands which will be returned in the <em>rendered</em> key within the result. For state <em>rendered</em> active connection to remote host is not required.</div>
<div>The state <em>gathered</em> 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 <em>gathered</em> key within the result.</div>
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_lag_interfaces_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_lag_interfaces_module.rst
index 5970f95e9..1ce28db09 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_lag_interfaces_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_lag_interfaces_module.rst
@@ -238,7 +238,7 @@ Examples
- name: Port-channel20
members:
- member: GigabitEthernet0/3
- mode: on
+ mode: "on"
- name: Port-channel30
members:
- member: GigabitEthernet0/4
@@ -461,7 +461,7 @@ Examples
# channel-group 30 mode active
# Using Deleted without any config passed
- #"(NOTE: This will delete all of configured LLDP module attributes)"
+ # "(NOTE: This will delete all of configured LLDP module attributes)"
#
# Before state:
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_linkagg_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_linkagg_module.rst
index 599f0130a..1a3c30505 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_linkagg_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_linkagg_module.rst
@@ -275,7 +275,7 @@ Examples
- name: Create aggregate of linkagg definitions
cisco.ios.ios_linkagg:
aggregate:
- - { group: 3, mode: on, members: [GigabitEthernet0/1] }
+ - { group: 3, mode: "on", members: [GigabitEthernet0/1] }
- { group: 100, mode: passive, members: [GigabitEthernet0/2] }
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_global_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_global_module.rst
index dbb09c1c8..131fa5c7a 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_global_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_global_module.rst
@@ -358,6 +358,7 @@ Parameters
<ul style="margin: 0; padding: 0"><b>Choices:</b>
<li><div style="color: blue"><b>merged</b>&nbsp;&larr;</div></li>
<li>replaced</li>
+ <li>overridden</li>
<li>deleted</li>
<li>rendered</li>
<li>gathered</li>
@@ -366,6 +367,7 @@ Parameters
</td>
<td>
<div>The state the configuration should be left in</div>
+ <div>The module have declaratively similar behavior for replaced and overridden state.</div>
<div>The states <em>rendered</em>, <em>gathered</em> and <em>parsed</em> does not perform any change on the device.</div>
<div>The state <em>rendered</em> will transform the configuration in <code>config</code> option to platform specific CLI commands which will be returned in the <em>rendered</em> key within the result. For state <em>rendered</em> active connection to remote host is not required.</div>
<div>The state <em>gathered</em> 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 <em>gathered</em> key within the result.</div>
@@ -438,7 +440,7 @@ Examples
# lldp reinit 5
# Using Deleted without any config passed
- #"(NOTE: This will delete all of configured LLDP module attributes)"
+ # "(NOTE: This will delete all of configured LLDP module attributes)"
# Before state:
# -------------
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_global_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_global_module.rst
index d63f8cf32..504441719 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_global_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_global_module.rst
@@ -2490,7 +2490,7 @@ Examples
# Before state:
# -------------
- #router-ios#show running-config | section logging
+ # router-ios#show running-config | section logging
# logging exception 4099
# logging message-counter log
# logging userinfo
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_module.rst
deleted file mode 100644
index be41b3771..000000000
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_module.rst
+++ /dev/null
@@ -1,401 +0,0 @@
-.. _cisco.ios.ios_logging_module:
-
-
-*********************
-cisco.ios.ios_logging
-*********************
-
-**(deprecated, removed after 2023-06-01) Manage logging on network devices**
-
-
-Version added: 1.0.0
-
-.. contents::
- :local:
- :depth: 1
-
-DEPRECATED
-----------
-:Removed in collection release after 2023-06-01
-:Why: Newer and updated modules released with more functionality.
-:Alternative: ios_logging_global
-
-
-
-Synopsis
---------
-- This module provides declarative management of logging on Cisco Ios devices.
-
-
-
-
-Parameters
-----------
-
-.. raw:: html
-
- <table border=0 cellpadding=0 class="documentation-table">
- <tr>
- <th colspan="2">Parameter</th>
- <th>Choices/<font color="blue">Defaults</font></th>
- <th width="100%">Comments</th>
- </tr>
- <tr>
- <td colspan="2">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>aggregate</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">list</span>
- / <span style="color: purple">elements=dictionary</span>
- </div>
- </td>
- <td>
- </td>
- <td>
- <div>List of logging definitions.</div>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder"></td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>dest</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- <ul style="margin: 0; padding: 0"><b>Choices:</b>
- <li>on</li>
- <li>host</li>
- <li>console</li>
- <li>monitor</li>
- <li>buffered</li>
- <li>trap</li>
- </ul>
- </td>
- <td>
- <div>Destination of the logs.</div>
- <div>On dest has to be quoted as &#x27;on&#x27; or else pyyaml will convert to True before it gets to Ansible.</div>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder"></td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>facility</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- </td>
- <td>
- <div>Set logging facility.</div>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder"></td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>level</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- <ul style="margin: 0; padding: 0"><b>Choices:</b>
- <li>emergencies</li>
- <li>alerts</li>
- <li>critical</li>
- <li>errors</li>
- <li>warnings</li>
- <li>notifications</li>
- <li>informational</li>
- <li>debugging</li>
- </ul>
- </td>
- <td>
- <div>Set logging severity levels.</div>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder"></td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>name</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- </td>
- <td>
- <div>The hostname or IP address of the destination.</div>
- <div>Required when <em>dest=host</em>.</div>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder"></td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>size</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">integer</span>
- </div>
- </td>
- <td>
- </td>
- <td>
- <div>Size of buffer. The acceptable value is in range from 4096 to 4294967295 bytes.</div>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder"></td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>state</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- <ul style="margin: 0; padding: 0"><b>Choices:</b>
- <li>present</li>
- <li>absent</li>
- </ul>
- </td>
- <td>
- <div>State of the logging configuration.</div>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>dest</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- <ul style="margin: 0; padding: 0"><b>Choices:</b>
- <li>on</li>
- <li>host</li>
- <li>console</li>
- <li>monitor</li>
- <li>buffered</li>
- <li>trap</li>
- </ul>
- </td>
- <td>
- <div>Destination of the logs.</div>
- <div>On dest has to be quoted as &#x27;on&#x27; or else pyyaml will convert to True before it gets to Ansible.</div>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>facility</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- </td>
- <td>
- <div>Set logging facility.</div>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>level</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- <ul style="margin: 0; padding: 0"><b>Choices:</b>
- <li>emergencies</li>
- <li>alerts</li>
- <li>critical</li>
- <li>errors</li>
- <li>warnings</li>
- <li>notifications</li>
- <li>informational</li>
- <li><div style="color: blue"><b>debugging</b>&nbsp;&larr;</div></li>
- </ul>
- </td>
- <td>
- <div>Set logging severity levels.</div>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>name</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- </td>
- <td>
- <div>The hostname or IP address of the destination.</div>
- <div>Required when <em>dest=host</em>.</div>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>size</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">integer</span>
- </div>
- </td>
- <td>
- </td>
- <td>
- <div>Size of buffer. The acceptable value is in range from 4096 to 4294967295 bytes.</div>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <div class="ansibleOptionAnchor" id="parameter-"></div>
- <b>state</b>
- <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>
- <ul style="margin: 0; padding: 0"><b>Choices:</b>
- <li><div style="color: blue"><b>present</b>&nbsp;&larr;</div></li>
- <li>absent</li>
- </ul>
- </td>
- <td>
- <div>State of the logging configuration.</div>
- </td>
- </tr>
- </table>
- <br/>
-
-
-Notes
------
-
-.. note::
- - Tested against IOS 15.6
- - The 'Default System Message Logging Configuration' of the ios device like facility Local7 or logging on is not subjected to idempotency causes
- - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide <network_guide>`
- - For more information on using Ansible to manage Cisco devices see the `Cisco integration page <https://www.ansible.com/integrations/networks/cisco>`_.
-
-
-
-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 <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module:
-
-.. raw:: html
-
- <table border=0 cellpadding=0 class="documentation-table">
- <tr>
- <th colspan="1">Key</th>
- <th>Returned</th>
- <th width="100%">Description</th>
- </tr>
- <tr>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>commands</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">list</span>
- </div>
- </td>
- <td>always</td>
- <td>
- <div>The list of configuration mode commands to send to the device</div>
- <br/>
- <div style="font-size: smaller"><b>Sample:</b></div>
- <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;logging facility local7&#x27;, &#x27;logging host 172.16.0.1&#x27;]</div>
- </td>
- </tr>
- </table>
- <br/><br/>
-
-
-Status
-------
-
-
-- This module will be removed in a release after 2023-06-01. *[deprecated]*
-- For more information see `DEPRECATED`_.
-
-
-Authors
-~~~~~~~
-
-- Trishna Guha (@trishnaguha)
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ntp_global_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ntp_global_module.rst
index 31c3df210..10d591cf9 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ntp_global_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ntp_global_module.rst
@@ -1884,7 +1884,7 @@ Examples
# Before state:
# -------------
- #router-ios#show running-config | section ^ntp
+ # router-ios#show running-config | section ^ntp
# ntp max-associations 34
# ntp logging
# ntp allow mode control 4
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospf_interfaces_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospf_interfaces_module.rst
index 1c19bef92..e780288c0 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospf_interfaces_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospf_interfaces_module.rst
@@ -1529,19 +1529,60 @@ Examples
- 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"
- # ]
+ # Task Output:
+ # ------------
+ # before:
+ # - name: GigabitEthernet0/0
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv6
+ # priority: 20
+ # process:
+ # area_id: '105'
+ # id: 55
+ # transmit_delay: 30
+ # name: GigabitEthernet0/1
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # cost:
+ # interface_cost: 30
+ # priority: 40
+ # process:
+ # area_id: '20'
+ # id: 10
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # name: GigabitEthernet0/2
+ #
+ # 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:
+ # - name: GigabitEthernet0/0
+ # - name: GigabitEthernet0/1
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # cost:
+ # interface_cost: 30
+ # priority: 40
+ # process:
+ # area_id: '20'
+ # id: 10
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # name: GigabitEthernet0/2
+ #
# After state:
- # -------------
+ # ------------
# router-ios#sh running-config | section ^interface
# interface GigabitEthernet0/0
# interface GigabitEthernet0/1
@@ -1575,22 +1616,51 @@ Examples
cisco.ios.ios_ospf_interfaces:
state: deleted
- # Commands Fired:
- # ---------------
+ # Task Output:
+ # ------------
+
+ # before:
+ # - name: GigabitEthernet0/0
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv6
+ # priority: 20
+ # process:
+ # area_id: '105'
+ # id: 55
+ # transmit_delay: 30
+ # name: GigabitEthernet0/1
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # cost:
+ # interface_cost: 30
+ # priority: 40
+ # process:
+ # area_id: '20'
+ # id: 10
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # name: GigabitEthernet0/2
+ #
+ # 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
#
- # "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:
+ # - name: GigabitEthernet0/0
+ # - name: GigabitEthernet0/1
+ # - name: GigabitEthernet0/2
# After state:
# -------------
@@ -1644,29 +1714,67 @@ Examples
transmit_delay: 45
state: merged
- # Commands Fired:
- # ---------------
+ # Task Output:
+ # ------------
+ # before: []
+ #
+ # 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
#
- # "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:
+ # - name: GigabitEthernet0/0
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # bfd: true
+ # cost:
+ # interface_cost: 5
+ # dead_interval:
+ # time: 5
+ # demand_circuit:
+ # enable: true
+ # ignore: true
+ # network:
+ # broadcast: true
+ # priority: 25
+ # process:
+ # area_id: '30'
+ # id: 10
+ # resync_timeout: 10
+ # shutdown: true
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # - 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/2
# After state:
# -------------
@@ -1720,7 +1828,7 @@ Examples
# ipv6 ospf manet peering link-metrics 10
# interface GigabitEthernet0/2
- - name: Override provided OSPF Interfaces configuration
+ - name: Override running config with provided OSPF Interfaces configuration
cisco.ios.ios_ospf_interfaces:
config:
- name: GigabitEthernet0/1
@@ -1746,35 +1854,97 @@ Examples
hops: 50
state: overridden
- # Commands Fired:
- # ---------------
+ # Task Output:
+ # ------------
+ #
+ # before:
+ # - name: GigabitEthernet0/0
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # bfd: true
+ # cost:
+ # interface_cost: 5
+ # dead_interval:
+ # time: 5
+ # demand_circuit:
+ # enable: true
+ # ignore: true
+ # network:
+ # broadcast: true
+ # priority: 25
+ # process:
+ # area_id: '30'
+ # id: 10
+ # resync_timeout: 10
+ # shutdown: true
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # - 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/2
+ #
+ # 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
+ #
+ # parsed:
+ # - name: GigabitEthernet0/0
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv6
+ # priority: 20
+ # process:
+ # area_id: '105'
+ # id: 55
+ # transmit_delay: 30
+ # name: GigabitEthernet0/1
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # cost:
+ # interface_cost: 30
+ # priority: 40
+ # process:
+ # area_id: '20'
+ # id: 10
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # name: GigabitEthernet0/2
#
- # "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:
# -------------
#
@@ -1833,18 +2003,102 @@ Examples
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"
- # ]
+ # Task Output:
+ # ------------
+ #
+ # before:
+ # - name: GigabitEthernet0/0
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # bfd: true
+ # cost:
+ # interface_cost: 5
+ # dead_interval:
+ # time: 5
+ # demand_circuit:
+ # enable: true
+ # ignore: true
+ # network:
+ # broadcast: true
+ # priority: 25
+ # process:
+ # area_id: '30'
+ # id: 10
+ # resync_timeout: 10
+ # shutdown: true
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # - 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/2
+ #
+ # commands:
+ # - interface GigabitEthernet0/2
+ # - ipv6 ospf 55 area 105
+ # - ipv6 ospf adjacency stagger disable
+ # - ipv6 ospf priority 20
+ # - ipv6 ospf transmit-delay 30
+ #
+ # after:
+ # - name: GigabitEthernet0/0
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # bfd: true
+ # cost:
+ # interface_cost: 5
+ # dead_interval:
+ # time: 5
+ # demand_circuit:
+ # enable: true
+ # ignore: true
+ # network:
+ # broadcast: true
+ # priority: 25
+ # process:
+ # area_id: '30'
+ # id: 10
+ # resync_timeout: 10
+ # shutdown: true
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # - 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
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv6
+ # priority: 20
+ # process:
+ # area_id: '105'
+ # id: 55
+ # transmit_delay: 30
+ # name: GigabitEthernet0/2
# After state:
- # -------------
+ # ------------
# router-ios#sh running-config | section ^interface
# interface GigabitEthernet0/0
# interface GigabitEthernet0/1
@@ -1903,65 +2157,46 @@ Examples
config:
state: gathered
- # Module Execution Result:
- # ------------------------
+ # Task Output:
+ # ------------
#
- # "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"
- # }
- # ]
+ # gathered:
+ # - name: GigabitEthernet0/0
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # bfd: true
+ # cost:
+ # interface_cost: 5
+ # dead_interval:
+ # time: 5
+ # demand_circuit:
+ # enable: true
+ # ignore: true
+ # network:
+ # broadcast: true
+ # priority: 25
+ # process:
+ # area_id: '30'
+ # id: 10
+ # resync_timeout: 10
+ # shutdown: true
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # - 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/2
# After state:
# ------------
@@ -2027,29 +2262,29 @@ Examples
transmit_delay: 45
state: rendered
- # Module Execution Result:
- # ------------------------
+ # Task Output:
+ # ------------
+ #
+ # 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
#
- # "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
@@ -2082,66 +2317,46 @@ Examples
running_config: "{{ lookup('file', 'parsed.cfg') }}"
state: parsed
- # Module Execution Result:
- # ------------------------
+ # Task Output:
+ # ------------
#
- # "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"
- # }
- # ]
+ # parsed:
+ # - name: GigabitEthernet0/2
+ # - address_family:
+ # - adjacency: true
+ # afi: ipv4
+ # bfd: true
+ # cost:
+ # interface_cost: 5
+ # dead_interval:
+ # time: 5
+ # demand_circuit:
+ # enable: true
+ # ignore: true
+ # network:
+ # broadcast: true
+ # priority: 25
+ # process:
+ # area_id: '30'
+ # id: 10
+ # resync_timeout: 10
+ # shutdown: true
+ # ttl_security:
+ # hops: 50
+ # set: true
+ # - 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
@@ -2163,7 +2378,7 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<b>after</b>
<a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
<div style="font-size: small">
- <span style="color: purple">dictionary</span>
+ <span style="color: purple">list</span>
</div>
</td>
<td>when changed</td>
@@ -2180,7 +2395,7 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<b>before</b>
<a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
<div style="font-size: small">
- <span style="color: purple">dictionary</span>
+ <span style="color: purple">list</span>
</div>
</td>
<td>when <em>state</em> is <code>merged</code>, <code>replaced</code>, <code>overridden</code>, <code>deleted</code> or <code>purged</code></td>
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst
index aeffea4cf..2cd986ce1 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst
@@ -3661,9 +3661,9 @@ Parameters
<td>
</td>
<td>
- <div>passive_interface param is deprecated and a newer param passive_interfaces with added functionality&#x27;s is introduced, please meke use of the new available passive_interfaces instead.</div>
<div>Suppress routing updates on an interface (GigabitEthernet A/B)</div>
<div>Interface name with respective interface number</div>
+ <div>passive_interface param is DEPRECATED and a newer param passive_interfaces with added functionality&#x27;s is introduced, this attribute will be removed after 2026-07-18.</div>
</td>
</tr>
<tr>
@@ -4589,96 +4589,6 @@ 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:
@@ -4723,7 +4633,7 @@ Examples
passive_interfaces:
default: true
interface:
- set_interface: False
+ set_interface: false
name:
- GigabitEthernet0/1
- GigabitEthernet0/2
@@ -4749,35 +4659,93 @@ Examples
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"
- # "passive-interface default"
- # "no passive-interface GigabitEthernet0/1"
- # ]
+ # Task Output:
+ # ------------
+
+ # before: {}
+ # commands:
+ # - router ospf 200 vrf blue
+ # - auto-cost reference-bandwidth 4
+ # - domain-id 192.0.3.1
+ # - max-metric router-lsa on-startup 100
+ # - area 10 capability default-exclusion
+ # - distribute-list 10 out
+ # - distribute-list 123 in
+ # - router ospf 1
+ # - default-information originate
+ # - max-metric router-lsa on-startup 110
+ # - area 5 capability default-exclusion
+ # - area 10 authentication message-digest
+ # - area 10 default-cost 10
+ # - area 10 nssa default-information-originate metric 10
+ # - area 10 nssa translate type7 suppress-fa
+ # - 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
+ # - passive-interface default
+ # - no passive-interface GigabitEthernet0/1
+ # - no passive-interface GigabitEthernet0/2
+
+ # after:
+ # processes:
+ # - areas:
+ # - area_id: '10'
+ # capability: true
+ # auto_cost:
+ # reference_bandwidth: 4
+ # set: true
+ # 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
+ # - areas:
+ # - area_id: '5'
+ # 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
+ # passive_interfaces:
+ # default: true
+ # interface:
+ # name:
+ # - GigabitEthernet2
+ # - GigabitEthernet1
+ # set_interface: false
+ # process_id: 1
# After state:
- # -------------
+ # ------------
#
# router-ios#sh running-config | section ^router ospf
# router ospf 200 vrf blue
@@ -4789,18 +4757,20 @@ Examples
# distribute-list 123 in
# router ospf 1
# max-metric router-lsa on-startup 110
+ # area 5 capability default-exclusion
# 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
+ # passive-interface default
+ # no passive-interface GigabitEthernet1
+ # no passive-interface GigabitEthernet2
# network 198.51.100.0 0.0.0.255 area 5
# default-information originate
- # passive-interface default
- # no passive-interface GigabitEthernet0/1
- # no passive-interface GigabitEthernet0/2
- # Using overridden
+ # Using replaced
# Before state:
# -------------
@@ -4815,15 +4785,20 @@ Examples
# distribute-list 123 in
# router ospf 1
# max-metric router-lsa on-startup 110
+ # area 5 capability default-exclusion
# 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
+ # passive-interface default
+ # no passive-interface GigabitEthernet1
+ # no passive-interface GigabitEthernet2
# network 198.51.100.0 0.0.0.255 area 5
# default-information originate
- - name: Override provided OSPF V2 configuration
+ - name: Replace running config with provided OSPF V2 configuration
cisco.ios.ios_ospfv2:
config:
processes:
@@ -4859,35 +4834,156 @@ Examples
default_information_originate:
metric: 10
translate: suppress-fa
- state: overridden
+ state: replaced
- # Commands Fired:
- # ---------------
+ # Task Output:
+ # ------------
+ #
+ # before:
+ # processes:
+ # - areas:
+ # - area_id: '10'
+ # capability: true
+ # auto_cost:
+ # reference_bandwidth: 4
+ # set: true
+ # 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
+ # - areas:
+ # - area_id: '5'
+ # 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
+ # passive_interfaces:
+ # default: true
+ # interface:
+ # name:
+ # - GigabitEthernet2
+ # - GigabitEthernet1
+ # set_interface: false
+ # process_id: 1
#
- # "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"
+ # 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:
+ # processes:
+ # - areas:
+ # - area_id: '10'
+ # authentication:
+ # message_digest: true
+ # default_cost: 10
+ # domain_id:
+ # ip_address:
+ # address: 192.0.4.1
+ # max_metric:
+ # on_startup:
+ # time: 200
+ # router_lsa: true
+ # maximum_paths: 15
+ # process_id: 200
+ # ttl_security:
+ # hops: 7
+ # vrf: blue
+ # - areas:
+ # - area_id: '5'
+ # authentication:
+ # message_digest: true
+ # nssa:
+ # default_information_originate:
+ # metric: 10
+ # translate: suppress-fa
+ # auto_cost:
+ # reference_bandwidth: 5
+ # set: true
+ # domain_id:
+ # ip_address:
+ # address: 192.0.5.1
+ # process_id: 100
+ # vrf: ospf_vrf
+ # - 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
# After state:
# -------------
- #
# router-ios#sh running-config | section ^router ospf
# router ospf 200 vrf blue
# domain-id 192.0.4.1
@@ -4902,8 +4998,20 @@ Examples
# 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 replaced
+ # Using overridden
# Before state:
# -------------
@@ -4926,7 +5034,7 @@ Examples
# network 198.51.100.0 0.0.0.255 area 5
# default-information originate
- - name: Replaced provided OSPF V2 configuration
+ - name: Override provided OSPF V2 configuration
cisco.ios.ios_ospfv2:
config:
processes:
@@ -4962,32 +5070,117 @@ Examples
default_information_originate:
metric: 10
translate: suppress-fa
- state: replaced
+ state: overridden
- # 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"
- # ]
+ # Task Output:
+ # ------------
+ # before:
+ # processes:
+ # - areas:
+ # - area_id: '10'
+ # capability: true
+ # auto_cost:
+ # reference_bandwidth: 4
+ # set: true
+ # 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
+ # - areas:
+ # - area_id: '10'
+ # authentication:
+ # message_digest: true
+ # default_cost: 10
+ # filter_list:
+ # - 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
+ #
+ # 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:
+ # processes:
+ # - areas:
+ # - area_id: '10'
+ # authentication:
+ # message_digest: true
+ # default_cost: 10
+ # domain_id:
+ # ip_address:
+ # address: 192.0.4.1
+ # max_metric:
+ # on_startup:
+ # time: 200
+ # router_lsa: true
+ # maximum_paths: 15
+ # process_id: 200
+ # ttl_security:
+ # hops: 7
+ # vrf: blue
+ # - areas:
+ # - area_id: '5'
+ # authentication:
+ # message_digest: true
+ # nssa:
+ # default_information_originate:
+ # metric: 10
+ # translate: suppress-fa
+ # auto_cost:
+ # reference_bandwidth: 5
+ # set: true
+ # domain_id:
+ # ip_address:
+ # address: 192.0.5.1
+ # process_id: 100
+ # vrf: ospf_vrf
+ #
# After state:
- # -------------
+ # ------------
+ #
# router-ios#sh running-config | section ^router ospf
# router ospf 200 vrf blue
# domain-id 192.0.4.1
@@ -5002,19 +5195,214 @@ Examples
# area 5 authentication message-digest
# area 5 nssa default-information-originate metric 10
# area 5 nssa translate type7 suppress-fa
+
+ # 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
+
+ # Task Output:
+ # ------------
+
+ # before:
+ # processes:
+ # - areas:
+ # - area_id: '10'
+ # capability: true
+ # auto_cost:
+ # reference_bandwidth: 4
+ # set: true
+ # 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
+ # - areas:
+ # - area_id: '10'
+ # authentication:
+ # message_digest: true
+ # default_cost: 10
+ # filter_list:
+ # - 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
+ #
+ # commands:
+ # - no router ospf 1
+ #
+ # processes:
+ # - areas:
+ # - area_id: '10'
+ # capability: true
+ # auto_cost:
+ # reference_bandwidth: 4
+ # set: true
+ # 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
+
+ # 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 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
+ - name: Delete all OSPF processes
+ cisco.ios.ios_ospfv2:
+ state: deleted
+
+ # Task Output:
+ # ------------
+
+ # before:
+ # processes:
+ # - areas:
+ # - area_id: '10'
+ # capability: true
+ # auto_cost:
+ # reference_bandwidth: 4
+ # set: true
+ # 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
+ # - areas:
+ # - area_id: '10'
+ # authentication:
+ # message_digest: true
+ # default_cost: 10
+ # filter_list:
+ # - 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
+ #
+ # commands:
+ # - no router ospf 200 vrf blue
+ # - no router ospf 1
+ #
+ # after: {}
+ #
+ # After state:
+ # ------------
+ # router-ios#sh running-config | section ^router ospf
+ # router-ios#
+
# Using Gathered
# Before state:
@@ -5038,103 +5426,61 @@ Examples
# network 198.51.100.0 0.0.0.255 area 5
# default-information originate
- - name: Gather OSPFV2 provided configurations
+ - name: Gather OSPFV2 running configurations
cisco.ios.ios_ospfv2:
config:
state: gathered
- # Module Execution Result:
- # ------------------------
+ # Task Output:
+ # ------------
#
- # "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"
- # }
- # ]
- # }
+ # gathered:
+ # processes:
+ # - areas:
+ # - area_id: '10'
+ # capability: true
+ # auto_cost:
+ # reference_bandwidth: 4
+ # set: true
+ # 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
+ # - areas:
+ # - area_id: '10'
+ # authentication:
+ # message_digest: true
+ # default_cost: 10
+ # filter_list:
+ # - 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
+
# After state:
# ------------
@@ -5214,30 +5560,30 @@ Examples
direction: in
state: rendered
- # Module Execution Result:
- # ------------------------
+ # Task Output:
+ # ------------
+
+ # 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
#
- # "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
@@ -5256,38 +5602,26 @@ Examples
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
- # }
- # ]
- # }
+ # Task Output:
+ # ------------
+
+ # parsed:
+ # processes:
+ # - areas:
+ # - area_id: '5'
+ # authentication:
+ # message_digest: true
+ # nssa:
+ # default_information_originate:
+ # metric: 10
+ # translate: suppress-fa
+ # auto_cost:
+ # reference_bandwidth: 5
+ # set: true
+ # domain_id:
+ # ip_address:
+ # address: 192.0.5.1
+ # process_id: 100
@@ -5356,6 +5690,57 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;router ospf 200 vrf blue&#x27;, &#x27;auto-cost reference-bandwidth 5&#x27;, &#x27;domain-id 192.0.4.1&#x27;]</div>
</td>
</tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>gathered</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>gathered</code></td>
+ <td>
+ <div>Facts about the network resource gathered from the remote device as structured data.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>parsed</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>parsed</code></td>
+ <td>
+ <div>The device native config provided in <em>running_config</em> option parsed into structured data as per module argspec.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>rendered</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>rendered</code></td>
+ <td>
+ <div>The provided configuration in the task rendered in device-native format (offline).</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;router ospf 200 vrf blue&#x27;, &#x27;auto-cost reference-bandwidth 4&#x27;, &#x27;distribute-list 10 out&#x27;]</div>
+ </td>
+ </tr>
</table>
<br/><br/>
@@ -5368,3 +5753,4 @@ Authors
~~~~~~~
- Sumit Jaiswal (@justjais)
+- Vinay M (@roverflow)
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst
index af86b6cfa..950c4ed9e 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst
@@ -6572,92 +6572,6 @@ 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:
@@ -6714,26 +6628,189 @@ Examples
reference_bandwidth: 4
state: merged
- # Commands Fired:
- # ---------------
+ # Task Output:
+ # ------------
+
+ # before: {}
+ #
+ # 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
#
- # "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:
+ # 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 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
+
+ # Task Output:
+ # ------------
+
+ # before:
+ # 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
+ #
+ # commands:
+ # - no router ospfv3 1
+ #
+ # parsed:
+ # processes:
+ # - 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 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
@@ -6753,6 +6830,64 @@ Examples
# adjacency stagger 200 200
# exit-address-family
+ - name: Delete all OSPF processes
+ cisco.ios.ios_ospfv3:
+ state: deleted
+
+ # Task Output:
+ # ------------
+
+ # before:
+ # 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
+ #
+ # commands:
+ # - no router ospfv3 200
+ # - no router ospfv3 1
+ #
+ # after: {}
+ #
+ # After state:
+ # ------------
+ # router-ios#sh running-config | section ^router ospfv3
+ # router-ios#
+
+
# Using overridden
# Before state:
@@ -6802,23 +6937,86 @@ Examples
metric: 10
state: overridden
- # Commands Fired:
- # ---------------
+ # Task Output:
+ # ------------
+
+ # before:
+ # 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
+ #
+ # 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
#
- # "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:
+ # processes:
+ # - address_family:
+ # - adjacency:
+ # max_adjacency: 50
+ # min_adjacency: 50
+ # afi: ipv4
+ # areas:
+ # - area_id: '200'
+ # nssa:
+ # default_information_originate:
+ # metric: 200
+ # nssa_only: true
+ # unicast: true
+ # areas:
+ # - area_id: '10'
+ # nssa:
+ # default_information_originate:
+ # metric: 10
+ # max_metric:
+ # on_startup:
+ # time: 200
+ # router_lsa: true
+ # process_id: 200
# After state:
- # -------------
+ # ------------
#
# router-ios#sh running-config | section ^router ospfv3
# router ospfv3 200
@@ -6852,7 +7050,7 @@ Examples
# adjacency stagger 200 200
# exit-address-family
- - name: Replaced provided OSPFV3 configuration
+ - name: Perform replace with provided configurations.
cisco.ios.ios_ospfv3:
config:
processes:
@@ -6880,19 +7078,103 @@ Examples
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"
- # ]
+ # Task Output:
+ # ------------
+ # before:
+ # 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
+ #
+ # 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:
+ # 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:
+ # - afi: ipv4
+ # areas:
+ # - area_id: '200'
+ # nssa:
+ # default_information_originate:
+ # metric: 200
+ # nssa_only: true
+ # unicast: true
+ # areas:
+ # - area_id: '10'
+ # nssa:
+ # default_information_originate:
+ # metric: 10
+ # max_metric:
+ # on_startup:
+ # time: 200
+ # router_lsa: true
+ # process_id: 200
+ #
# After state:
# -------------
# router-ios#sh running-config | section ^router ospfv3
@@ -6940,76 +7222,47 @@ Examples
config:
state: gathered
- # Module Execution Result:
- # ------------------------
+ # Task Output:
+ # ------------
#
- # "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
- # }
- # ]
- # }
+ # 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
+ # - 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:
# ------------
@@ -7081,24 +7334,24 @@ Examples
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"
- # ]
+ # Task Output:
+ # ------------
+
+ # 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
@@ -7121,59 +7374,52 @@ Examples
# adjacency stagger 200 200
# exit-address-family
- - name: Parse the provided configuration with the existing running configuration
+ - name: Parse the provided configuration and display structured ospfv3 facts.
cisco.ios.ios_ospfv3:
running_config: "{{ lookup('file', 'parsed.cfg') }}"
state: parsed
- # Module Execution Result:
- # ------------------------
+ # Task Output:
+ # ------------
#
- # "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
- # }
- # ]
- # }
+ # 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
+ # - 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
@@ -7242,6 +7488,57 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;router ospfv3 1&#x27;, &#x27;address-family ipv4 unicast vrf blue&#x27;, &#x27;adjacency stagger 50 50&#x27;]</div>
</td>
</tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>gathered</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>gathered</code></td>
+ <td>
+ <div>Facts about the network resource gathered from the remote device as structured data.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>parsed</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>parsed</code></td>
+ <td>
+ <div>The device native config provided in <em>running_config</em> option parsed into structured data as per module argspec.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>rendered</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>rendered</code></td>
+ <td>
+ <div>The provided configuration in the task rendered in device-native format (offline).</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;router ospfv3 1&#x27;, &#x27;max-metric router-lsa on-startup 110&#x27;, &#x27;area 10 nssa default-information-originate metric 10&#x27;]</div>
+ </td>
+ </tr>
</table>
<br/><br/>
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ping_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ping_module.rst
index 209fdc24a..bce51f129 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_ping_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_ping_module.rst
@@ -138,6 +138,21 @@ Parameters
<tr>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>size</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Size of the packet to send.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>source</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_prefix_lists_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_prefix_lists_module.rst
index 0f021a78e..d32f0fe87 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_prefix_lists_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_prefix_lists_module.rst
@@ -348,16 +348,85 @@ Examples
- name: test_prefix
state: deleted
- # Commands Fired:
- # ---------------
- #
- # "commands": [
- # "no ip prefix-list 10",
- # "no ip prefix-list test_prefix"
- # ]
+ # Task Output
+ # -------------
+ # before:
+ # - afi: ipv4
+ # prefix_lists:
+ # - description: this is test description
+ # entries:
+ # - action: deny
+ # le: 15
+ # prefix: 1.0.0.0/8
+ # sequence: 5
+ # - action: deny
+ # ge: 10
+ # prefix: 35.0.0.0/8
+ # sequence: 10
+ # - action: deny
+ # ge: 15
+ # prefix: 12.0.0.0/8
+ # sequence: 15
+ # - action: deny
+ # ge: 20
+ # le: 21
+ # prefix: 14.0.0.0/8
+ # sequence: 20
+ # name: '10'
+ # - description: this is test
+ # entries:
+ # - action: deny
+ # ge: 15
+ # prefix: 12.0.0.0/8
+ # sequence: 50
+ # name: test
+ # - description: this is for prefix-list
+ # entries:
+ # - action: deny
+ # ge: 10
+ # le: 15
+ # prefix: 35.0.0.0/8
+ # sequence: 5
+ # - action: deny
+ # ge: 20
+ # prefix: 35.0.0.0/8
+ # sequence: 10
+ # name: test_prefix
+ # - afi: ipv6
+ # prefix_lists:
+ # - description: this is ipv6 prefix-list
+ # entries:
+ # - action: deny
+ # ge: 80
+ # prefix: 2001:DB8:0:4::/64
+ # sequence: 10
+ # name: test_ipv6
+ # commands:
+ # - no ip prefix-list 10
+ # - no ip prefix-list test_prefix
+ # after:
+ # - afi: ipv4
+ # prefix_lists:
+ # - description: this is test
+ # entries:
+ # - action: deny
+ # ge: 15
+ # prefix: 12.0.0.0/8
+ # sequence: 50
+ # name: test
+ # - afi: ipv6
+ # prefix_lists:
+ # - description: this is ipv6 prefix-list
+ # entries:
+ # - action: deny
+ # ge: 80
+ # prefix: 2001:DB8:0:4::/64
+ # sequence: 10
+ # name: test_ipv6
+
# After state:
- # -------------
+ # ------------
# router-ios#sh running-config | section ^ip prefix-list|^ipv6 prefix-list
# ip prefix-list test description this is test
# ip prefix-list test seq 50 deny 12.0.0.0/8 ge 15
@@ -389,14 +458,74 @@ Examples
- afi: ipv4
state: deleted
- # Commands Fired:
- # ---------------
- #
- # "commands": [
- # "no ip prefix-list test",
- # "no ip prefix-list 10",
- # "no ip prefix-list test_prefix"
- # ]
+ # Task Output
+ # -------------
+ # before:
+ # - afi: ipv4
+ # prefix_lists:
+ # - description: this is test description
+ # entries:
+ # - action: deny
+ # le: 15
+ # prefix: 1.0.0.0/8
+ # sequence: 5
+ # - action: deny
+ # ge: 10
+ # prefix: 35.0.0.0/8
+ # sequence: 10
+ # - action: deny
+ # ge: 15
+ # prefix: 12.0.0.0/8
+ # sequence: 15
+ # - action: deny
+ # ge: 20
+ # le: 21
+ # prefix: 14.0.0.0/8
+ # sequence: 20
+ # name: '10'
+ # - description: this is test
+ # entries:
+ # - action: deny
+ # ge: 15
+ # prefix: 12.0.0.0/8
+ # sequence: 50
+ # name: test
+ # - description: this is for prefix-list
+ # entries:
+ # - action: deny
+ # ge: 10
+ # le: 15
+ # prefix: 35.0.0.0/8
+ # sequence: 5
+ # - action: deny
+ # ge: 20
+ # prefix: 35.0.0.0/8
+ # sequence: 10
+ # name: test_prefix
+ # - afi: ipv6
+ # prefix_lists:
+ # - description: this is ipv6 prefix-list
+ # entries:
+ # - action: deny
+ # ge: 80
+ # prefix: 2001:DB8:0:4::/64
+ # sequence: 10
+ # name: test_ipv6
+ # commands:
+ # - "no ip prefix-list test",
+ # - "no ip prefix-list 10",
+ # - "no ip prefix-list test_prefix"
+ # after:
+ # - afi: ipv6
+ # prefix_lists:
+ # - description: this is ipv6 prefix-list
+ # entries:
+ # - action: deny
+ # ge: 80
+ # prefix: 2001:DB8:0:4::/64
+ # sequence: 10
+ # name: test_ipv6
+
# After state:
# -------------
@@ -1137,4 +1266,5 @@ Status
Authors
~~~~~~~
+- Sagar Paul (@KB-perByte)
- Sumit Jaiswal (@justjais)
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_service_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_service_module.rst
index 0156ec79c..ed859129d 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_service_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_service_module.rst
@@ -1015,6 +1015,7 @@ Parameters
<ul style="margin: 0; padding: 0"><b>Choices:</b>
<li><div style="color: blue"><b>merged</b>&nbsp;&larr;</div></li>
<li>replaced</li>
+ <li>overridden</li>
<li>deleted</li>
<li>gathered</li>
<li>rendered</li>
@@ -1023,6 +1024,7 @@ Parameters
</td>
<td>
<div>The state the configuration should be left in.</div>
+ <div>The module have declaratively similar behavior for replaced and overridden state.</div>
<div>Refer to examples for more details.</div>
</td>
</tr>
@@ -1256,7 +1258,7 @@ Examples
# service dhcp
# service password-recovery
- - name: "Delete service configuration and restore default configuration for some importants service (those with a default value in module)"
+ - name: "Delete service configuration and restore default configuration for some important service (those with a default value in module)"
cisco.ios.ios_service:
state: deleted
@@ -1293,8 +1295,8 @@ Examples
# prompt: true
# slave_log: true
- #·After·state:
- #·------------
+ # After state:
+ # ------------
#
# router-ios#show running-config all | section ^service
# service slave-log
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_snmp_server_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_snmp_server_module.rst
index 05ab8d691..063beb6c0 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_snmp_server_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_snmp_server_module.rst
@@ -604,6 +604,27 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>match</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>exact</li>
+ <li>prefix</li>
+ </ul>
+ </td>
+ <td>
+ <div>Specify a context name match criteria</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>notify</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -1310,6 +1331,27 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>aaa_server</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP AAA Server traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>auth_framework</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -1755,6 +1797,174 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>bulkstat</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow Data-Collection-MIB Collection notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>collection</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Data-Collection-MIB Collection notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Data-Collection-MIB Collection and Transfert notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>transfer</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Data-Collection-MIB Transfer notifications</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>call_home</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>SNMP CISCO-CALLHOME-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP CISCO-CALLHOME-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>message_send_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP ccmSmtpMsgSendFailNotif notification</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>server_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP ccmSmtpServerFailNotif notification</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>casa</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -2218,6 +2428,217 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>entity_diag</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP CISCO-ENTITY-DIAG-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>boot_up_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP ceDiagBootUpFailedNotif traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP CISCO-ENTITY-DIAG-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>hm_test_recover</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP ceDiagHMTestRecoverNotif traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>hm_thresh_reached</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP ceDiagHMThresholdReachedNotif traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>scheduled_test_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP ceDiagScheduledTestFailedNotif traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>entity_perf</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP CISCO-ENTITY-PERFORMANCE-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP CISCO-ENTITY-PERFORMANCE-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>throughput_notif</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ENTITY PERFORMANCE MIB throughput traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>entity_state</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP ENTITY-STATE-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>envmon</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -2227,7 +2648,7 @@ Parameters
<td>
</td>
<td>
- <div>Allow envmon related traps</div>
+ <div>Enable SNMP environmental monitor traps</div>
</td>
</tr>
<tr>
@@ -2236,6 +2657,28 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="4">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable/disable envmon traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>fan</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -2246,6 +2689,8 @@ Parameters
</td>
<td>
<div>Enable SNMP envmon fan traps</div>
+ <div>This option is DEPRECATED and is replaced with fan_enable which accepts bool as input</div>
+ <div>This attribute will be removed after 2024-09-01</div>
</td>
</tr>
<tr>
@@ -2370,6 +2815,28 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="4">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>fan_enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP envmon fan traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>shutdown</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -2458,6 +2925,48 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>errdisable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP errdisable notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>ether_oam</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP ethernet oam traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>ethernet</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -2921,6 +3430,174 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>flash</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>SNMP FLASH notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP FLASH notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>insertion</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP Flash Insertion notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>lowspace</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP Flash Low Space notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>removal</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP Flash Removal notifications</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>flex_links</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>SNMP FLEX Links traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP FLEX Links traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>status</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP FLEX Links status change traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>flowmon</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -3531,6 +4208,90 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>l2tc</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP L2 Tunnel Config traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP L2 Tunnel Config traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>sys_threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP L2TC System threshold traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP L2 Tunnel Config threshold traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>l2tun</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -3593,6 +4354,1232 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>license</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable license traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>lisp</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP LISP MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>local_auth</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP local auth traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>mac_notification</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP MAC Notification traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MAC Change traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MAC Notification traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>move</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MAC Move traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MAC Threshold traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>memory</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow MEMORY traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>bufferpeak</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP Memory Bufferpeak traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MEMORY traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>mpls</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Enable SNMP mpls traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>fast_reroute</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP MPLS fast reroute traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MPLS fast reroute traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>protected</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS fast reroute protection traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>ldp</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP MPLS label distribution protocol traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MPLS label distribution protocol traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>pv_limit</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS LDP path vector limit mismatch traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>session_down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS LDP session down traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>session_up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS LDP session up traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS LDP threshold exceeded traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>rfc</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Enable SNMP MPLS RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>ldp</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP MPLS label distribution protocol RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MPLS label distribution protocol RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>pv_limit</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS LDP path vector limit mismatch RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>session_down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS LDP session down RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>session_up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS LDP session up RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS LDP threshold exceeded RFC traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>traffic_eng</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP MPLS traffic engineering RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS TE tunnel down RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MPLS traffic engineering RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>reoptimized</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS TE tunnel reoptimized RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>reroute</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS TE tunnel reroute RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS TE tunnel up RFC traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vpn</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP MPLS Virtual Private Network RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MPLS Virtual Private Network RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>illegal_label</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN illegal label threshold exceeded RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>max_thresh_cleared</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN maximum threshold cleared RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>max_threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN maximum threshold exceeded RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>mid_threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN middle threshold exceeded RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vrf_down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN vrf down RFC traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vrf_up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN vrf up RFC traps</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>traffic_eng</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP MPLS traffic engineering traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS TE tunnel down traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MPLS traffic engineering traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>reroute</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS TE tunnel reroute traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS TE tunnel up traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vpn</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP MPLS Virtual Private Network traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP MPLS Virtual Private Network traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>illegal_label</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN illegal label threshold exceeded traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>max_thresh_cleared</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN maximum threshold cleared traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>max_threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN maximum threshold exceeded traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>mid_threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN middle threshold exceeded traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vrf_down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN vrf down traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vrf_up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable MPLS VPN vrf up traps</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>mpls_vpn</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -3607,6 +5594,8 @@ Parameters
</td>
<td>
<div>Enable SNMP mpls traps</div>
+ <div>This option is DEPRECATED and is replaced with mpls which accepts dict as input</div>
+ <div>This attribute will be removed after 2024-09-01</div>
</td>
</tr>
<tr>
@@ -3656,6 +5645,332 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>nhrp</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP NHRP traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP NHRP traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>nhc</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow Next Hop Client traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Next Hop Client down trap</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Next Hop Client traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Next Hop Client up trap</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>nhp</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow Next Hop Peer traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Next Hop Peer down trap</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Next Hop Peer traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Next Hop Peer up trap</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>nhs</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow Next Hop Server traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Next Hop Server down trap</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Next Hop Server traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Next Hop Server up trap</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>quota_exceeded</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable quota-exceeded trap</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>ospf</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -3965,6 +6280,403 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>ospfv3</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow OSPFv3 related traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>errors</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Error traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>bad_packet</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Packet parse failure on non-virtual interfaces</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>config_error</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Config mismatch errors on non-virtual interfaces</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Error traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>virt_bad_packet</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Packet parse failure on virtual interfaces</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>virt_config_error</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Config mismatch errors on virtual interfaces</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>rate_limit</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Trap rate limit values</div>
+ <div>Rate limit window size in seconds (between 2 and 60)</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>state_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>State change traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable State change traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>if_state_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Non_virtual interface state changes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>neighbor_restart_helper_status_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Neighbor graceful restart helper status changes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>neighbor_state_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Non_virtual neighbor state changes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>nssa_translator_status_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>NSSA translator status changes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>restart_status_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Graceful restart status changes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>virtif_state_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Virtual interface state changes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vn_restart_helper_status_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Virtual neighbor graceful restart helper status changes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vn_state_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Virtual neighbor state changes</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>pim</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -4092,6 +6804,147 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>port_security</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP port security traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>power_ethernet</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP power ethernet traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP power ethernet traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>group</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Enable SNMP inline power group based traps.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>slot_id</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>An integer between 1 and 20 (physical slot number)</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>threshold</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Threshold level for this slot</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>police</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Policing Trap</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>pw_vc</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -4113,6 +6966,48 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>rep</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP Resilient Ethernet Protocol Traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>rf</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable all SNMP traps defined in CISCO-RF-MIB</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>rsvp</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -4134,6 +7029,90 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>smart_license</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow smart license traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable smart license traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>entitlement</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Entitlement Notification trap</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>global</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable Global Notification traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>snmp</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -4262,6 +7241,133 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>stackwise</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP stackwise traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>stpx</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP STPX MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP STPX MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>inconsistency</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP STPX MIB InconsistencyUpdate traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>loop_inconsistency</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP STPX MIB LoopInconsistencyUpdate traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>root_inconsistency</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP STPX MIB RootInconsistencyUpdate traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>syslog</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -4304,6 +7410,734 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>trustsec</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP CISCO-TRUSTSEC-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>authz_file_error</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsAuthzCacheFileErrNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>cache_file_error</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsCacheFileAccessErrNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP CISCO-TRUSTSEC-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>keystore_file_error</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsSwKeystoreFileErrNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>keystore_sync_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsSwKeystoreSyncFailNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>random_number_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsSapRandonNumberFailNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>src_entropy_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsSrcEntropyFailNotif notifications</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>trustsec_interface</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP CISCO-TRUSTSEC-INTERFACE-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>authc_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsiIfAuthenticationFailNotif trap</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>authz_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsiAuthorizationFailNotif trap</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP CISCO-TRUSTSEC-INTERFACE-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>sap_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsiIfSapNegotiationFailNotif trap</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>supplicant_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsiIfAddSupplicantFailNotif trap</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>unauthorized</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsiIfUnauthorizedNotifEnable trap</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>trustsec_policy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP CISCO-TRUSTSEC-POLICY-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>authz_sgacl_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctspAuthorizationSgaclFailNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP CISCO-TRUSTSEC-POLICY-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>peer_policy_updated</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctspPeerPolicyUpdatedNotif notifications</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>trustsec_server</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP CISCO-TRUSTSEC-SERVER-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP CISCO-TRUSTSEC-SERVER-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>provision_secret</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsvNoProvisionSecretNotif notification</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>radius_server</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsvNoRadiusServerNotif notification</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>trustsec_sxp</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP CISCO-TRUSTSEC-SXP-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>binding_conflict</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsxSxpBindingConflictNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>binding_err</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsxSxpBindingErrNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>binding_expn_fail</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsxSxpBindingExpnFailNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>conn_config_err</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsxSxpConnConfigErrNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>conn_down</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsxSxpConnDownNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>conn_srcaddr_err</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsxSxpConnSourceAddrErrNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>conn_up</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsxSxpConnUpNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP CISCO-TRUSTSEC-SXP-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>msg_parse_err</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsxSxpMsgParseErrNotif notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>oper_nodeid_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable ctsxSxpOperNodeIdChangeNotif notifications</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>tty</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -4325,6 +8159,153 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="5">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>udld</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP CISCO-UDLDP-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP CISCO-UDLDP-MIB traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>link_fail_rpt</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP cudldpFastHelloLinkFailRptNotification traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>status_change</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP cudldpFastHelloStatusChangeNotification traps</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vlan_membership</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP VLAN membership traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vlancreate</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP VLAN created traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vlandelete</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP VLAN deleted traps</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>vrfmib</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -4447,6 +8428,111 @@ Parameters
<div>Enable SNMP vrrp traps</div>
</td>
</tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vswitch</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Allow SNMP Virtual Switch notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>dual_active</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP Virtual Switch (Dual Active) notification</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP Virtual Switch notifications</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vsl</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP Virtual Switch Link (VSL) notification</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vtp</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Enable SNMP VTP traps</div>
+ </td>
+ </tr>
<tr>
<td class="elbow-placeholder"></td>
@@ -5285,7 +9371,7 @@ Examples
# Before state:
# -------------
- #router-ios#show running-config | section ^snmp-server
+ # router-ios#show running-config | section ^snmp-server
# snmp-server engineID remote 172.16.0.12 udp-port 25 AB0C5342FF0F
# snmp-server user userPaul dev v1 access 24
# snmp-server group mergedGroup v3 auth
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlans_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlans_module.rst
index 93b259513..598486c57 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlans_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlans_module.rst
@@ -53,6 +53,58 @@ Parameters
<td class="elbow-placeholder"></td>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>member</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Members of VLAN</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>evi</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Ethernet Virtual Private Network (EVPN)</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vni</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ / <span style="color: red">required</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>VXLAN vni</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>mtu</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -221,6 +273,25 @@ Parameters
<tr>
<td colspan="3">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>configuration</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>When set to true, deals with vlan configuration CLIs</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>running_config</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -353,6 +424,44 @@ Examples
# ------------------------------------------------------------------------------
# 10
+ # Using merged (configuration: True)
+
+ # Before state:
+ # -------------
+ #
+ # Leaf-01#show run nve | sec ^vlan configuration
+ # vlan configuration 101
+ # member evpn-instance 101 vni 10101
+ # vlan configuration 201
+ # member evpn-instance 201 vni 10201
+
+
+ - name: Merge provided configuration with device configuration
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 102
+ member:
+ vni: 10102
+ evi: 102
+ - vlan_id: 901
+ member:
+ vni: 50901
+ configuration: true
+ state: merged
+
+ # After state:
+ # ------------
+ #
+ # Leaf-01#show run nve | sec ^vlan configuration
+ # vlan configuration 101
+ # member evpn-instance 101 vni 10101
+ # vlan configuration 102
+ # member evpn-instance 102 vni 10102
+ # vlan configuration 201
+ # member evpn-instance 201 vni 10201
+ # vlan configuration 901
+ # member vni 50901
+
# Using overridden
# Before state:
@@ -415,6 +524,45 @@ Examples
# 1004 fdnet 101004 1500 - - - ieee - 0 0
# 1005 trnet 101005 1500 - - - ibm - 0 0
+
+ # Using overridden (configuration: True)
+
+ # Before state:
+ # -------------
+ #
+ # Leaf-01#show run nve | sec ^vlan configuration
+ # vlan configuration 101
+ # member evpn-instance 101 vni 10101
+ # vlan configuration 102
+ # member evpn-instance 102 vni 10102
+ # vlan configuration 201
+ # member evpn-instance 201 vni 10201
+ # vlan configuration 901
+ # member vni 50901
+
+ - name: Override device configuration of all VLANs with provided configuration
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 101
+ member:
+ vni: 10102
+ evi: 102
+ - vlan_id: 102
+ member:
+ vni: 10101
+ evi: 101
+ configuration: true
+ state: overridden
+
+ # After state:
+ # ------------
+ #
+ # Leaf-01#show run nve | sec ^vlan configuration
+ # vlan configuration 101
+ # member evpn-instance 102 vni 10102
+ # vlan configuration 102
+ # member evpn-instance 101 vni 10101
+
# Using replaced
# Before state:
@@ -575,8 +723,41 @@ Examples
# 1004 fdnet 101004 1500 - - - ieee - 0 0
# 1005 trnet 101005 1500 - - - ibm - 0 0
+ # Using deleted (configuration: True)
+
+ # Before state:
+ # -------------
+ #
+ # Leaf-01#show run nve | sec ^vlan configuration
+ # vlan configuration 101
+ # member evpn-instance 101 vni 10101
+ # vlan configuration 102
+ # member evpn-instance 102 vni 10102
+ # vlan configuration 201
+ # member evpn-instance 201 vni 10201
+ # vlan configuration 901
+ # member vni 50901
+
+ - name: Delete attributes of given VLANs
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 101
+ configuration: true
+ state: deleted
+
+ # After state:
+ # -------------
+ #
+ # Leaf-01#show run nve | sec ^vlan configuration
+ # vlan configuration 102
+ # member evpn-instance 102 vni 10102
+ # vlan configuration 201
+ # member evpn-instance 201 vni 10201
+ # vlan configuration 901
+ # member vni 50901
+
# Using Deleted without any config passed
- #"(NOTE: This will delete all of configured vlans attributes)"
+ # "(NOTE: This will delete all of configured vlans attributes)"
# Before state:
# -------------
@@ -632,134 +813,108 @@ Examples
# 1004 fdnet 101004 1500 - - - ieee - 0 0
# 1005 trnet 101005 1500 - - - ibm - 0 0
- # Using Gathered
+ # Using Deleted without any config passed (configuration: True)
+ # "(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
+ # Leaf-01#show run nve | sec ^vlan configuration
+ # vlan configuration 101
+ # member evpn-instance 101 vni 10101
+ # vlan configuration 102
+ # member evpn-instance 102 vni 10102
+ # vlan configuration 201
+ # member evpn-instance 201 vni 10201
+ # vlan configuration 202
+ # member evpn-instance 202 vni 10202
+ # vlan configuration 901
+ # member vni 50901
+
+ - name: Delete attributes of ALL VLANs
+ cisco.ios.ios_vlans:
+ configuration: true
+ state: deleted
+
+ # After state:
+ # -------------
#
- # 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
+ # Leaf-01#show run nve | sec ^vlan configuration
+ # no vlan configuration 101
+ # no vlan configuration 102
+ # no vlan configuration 201
+ # no vlan configuration 202
+ # no vlan configuration 901
+ # no vlan configuration 902
+
+ # Using Gathered (configuration: True)
+
+ # Before state:
+ # -------------
#
- # Remote SPAN VLANs
- # ------------------------------------------------------------------------------
- # 10
+ # Leaf-01#show run nve | sec ^vlan configuration
+ # vlan configuration 101
+ # member evpn-instance 101 vni 10101
+ # vlan configuration 102
+ # member evpn-instance 102 vni 10102
+ # vlan configuration 201
+ # member evpn-instance 201 vni 10201
+ # vlan configuration 202
+ # member evpn-instance 202 vni 10202
+ # vlan configuration 901
+ # member vni 50901
- name: Gather listed vlans with provided configurations
cisco.ios.ios_vlans:
config:
+ configuration: true
state: gathered
# Module Execution Result:
# ------------------------
#
- # "gathered": [
- # {
- # "mtu": 1500,
- # "name": "default",
- # "shutdown": "disabled",
- # "state": "active",
- # "vlan_id": 1
+ # gathered = [
+ # {
+ # "member": {
+ # "evi": 101,
+ # "vni": 10101
# },
- # {
- # "mtu": 1500,
- # "name": "VLAN0010",
- # "shutdown": "disabled",
- # "state": "active",
- # "vlan_id": 10
- # },
- # {
- # "mtu": 1500,
- # "name": "VLAN0020",
- # "shutdown": "disabled",
- # "state": "active",
- # "vlan_id": 20
+ # "vlan_id": 101
+ # },
+ # {
+ # "member": {
+ # "evi": 102,
+ # "vni": 10102
# },
- # {
- # "mtu": 1500,
- # "name": "VLAN0030",
- # "shutdown": "disabled",
- # "state": "active",
- # "vlan_id": 30
+ # "vlan_id": 102
+ # },
+ # {
+ # "member": {
+ # "evi": 201,
+ # "vni": 10201
# },
- # {
- # "mtu": 1500,
- # "name": "fddi-default",
- # "shutdown": "enabled",
- # "state": "active",
- # "vlan_id": 1002
+ # "vlan_id": 201
+ # },
+ # {
+ # "member": {
+ # "evi": 202,
+ # "vni": 10202
# },
- # {
- # "mtu": 1500,
- # "name": "token-ring-default",
- # "shutdown": "enabled",
- # "state": "active",
- # "vlan_id": 1003
+ # "vlan_id": 202
+ # },
+ # {
+ # "member": {
+ # "vni": 50901
# },
- # {
- # "mtu": 1500,
- # "name": "fddinet-default",
- # "shutdown": "enabled",
- # "state": "active",
- # "vlan_id": 1004
+ # "vlan_id": 901
+ # },
+ # {
+ # "member": {
+ # "vni": 50902
# },
- # {
- # "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
+ # "vlan_id": 902
+ # }
+ # ]
# Using Rendered
@@ -802,6 +957,31 @@ Examples
# "shutdown"
# ]
+ # Using Rendered (configuration: True)
+
+ - name: Render the commands for provided configuration
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 101
+ member:
+ vni: 10101
+ evi: 101
+ - vlan_id: 102
+ member:
+ vni: 10102
+ evi: 102
+ state: rendered
+
+ # Module Execution Result:
+ # ------------------------
+ #
+ # "rendered": [
+ # "vlan configuration 101",
+ # "member evpn-instance 101 vni 10101",
+ # "vlan configuration 102",
+ # "member evpn-instance 102 vni 10102"
+ # ]
+
# Using Parsed
# File: parsed.cfg
@@ -896,6 +1076,50 @@ Examples
# }
# ]
+ # Using Parsed (configuration: True)
+
+ # File: parsed.cfg
+ # ----------------
+ #
+ # vlan configuration 101
+ # member evpn-instance 101 vni 10101
+ # vlan configuration 102
+ # member evpn-instance 102 vni 10102
+ # vlan configuration 901
+ # member vni 50901
+
+ - name: Parse the commands for provided configuration
+ cisco.ios.ios_vlans:
+ running_config: "{{ lookup('file', './parsed.cfg') }}"
+ configuration: true
+ state: parsed
+
+ # Module Execution Result:
+ # ------------------------
+ #
+ # "parsed": [
+ # {
+ # "member": {
+ # "evi": 101,
+ # "vni": 10101
+ # },
+ # "vlan_id": 101
+ # },
+ # {
+ # "member": {
+ # "evi": 102,
+ # "vni": 10102
+ # },
+ # "vlan_id": 102
+ # },
+ # {
+ # "member": {
+ # "vni": 50901
+ # },
+ # "vlan_id": 901
+ # }
+ # ]
+
Return Values
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_vrf_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_vrf_module.rst
index 1420a65fd..9223586e0 100644
--- a/ansible_collections/cisco/ios/docs/cisco.ios.ios_vrf_module.rst
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_vrf_module.rst
@@ -36,6 +36,22 @@ Parameters
<tr>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>address_family</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The list of address families with MDT parameters to be configured on the remote IOS device.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>associated_interfaces</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
diff --git a/ansible_collections/cisco/ios/docs/cisco.ios.ios_vxlan_vtep_module.rst b/ansible_collections/cisco/ios/docs/cisco.ios.ios_vxlan_vtep_module.rst
new file mode 100644
index 000000000..3f1abc5f5
--- /dev/null
+++ b/ansible_collections/cisco/ios/docs/cisco.ios.ios_vxlan_vtep_module.rst
@@ -0,0 +1,701 @@
+.. _cisco.ios.ios_vxlan_vtep_module:
+
+
+************************
+cisco.ios.ios_vxlan_vtep
+************************
+
+**Resource module to configure VXLAN VTEP interface.**
+
+
+Version added: 5.3.0
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+- This module provides declarative management of VXLAN VTEP interface on Cisco IOS network devices.
+
+
+
+
+Parameters
+----------
+
+.. raw:: html
+
+ <table border=0 cellpadding=0 class="documentation-table">
+ <tr>
+ <th colspan="7">Parameter</th>
+ <th>Choices/<font color="blue">Defaults</font></th>
+ <th width="100%">Comments</th>
+ </tr>
+ <tr>
+ <td colspan="7">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>config</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>A dictionary of VXLAN VTEP interface option</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="6">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>host_reachability_bgp</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Host reachability using EVPN protocol</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="6">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>interface</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ / <span style="color: red">required</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>VXLAN VTEP interface</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="6">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>member</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Configure VNI member</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vni</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Configure VNI information</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>l2vni</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Associates L2VNI with the VXLAN VTEP interface</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>replication</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Replication type for the L2VNI</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>mcast_group</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Configure multicast group for VN<em>s</em></div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>ipv4</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>IPv4 multicast group</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>ipv6</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>IPv6 multicast group</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>type</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>ingress</li>
+ <li>static</li>
+ </ul>
+ </td>
+ <td>
+ <div>Replication type</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vni</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>VNI number</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>l3vni</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Associates L3VNI with the VXLAN VTEP interface</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vni</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>VNI number</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>vrf</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>VRF name of the L3VNI</div>
+ </td>
+ </tr>
+
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="6">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>source_interface</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Source interface for the VXLAN VTEP interface</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="7">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>running_config</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>This option is used only with state <em>parsed</em>.</div>
+ <div>The value of this option should be the output received from the IOS device by executing the command <b>show running-config | section ^interface nve</b>.</div>
+ <div>The state <em>parsed</em> reads the configuration from <code>running_config</code> option and transforms it into Ansible structured data as per the resource module&#x27;s argspec and the value is then returned in the <em>parsed</em> key within the result.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="7">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>state</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>merged</b>&nbsp;&larr;</div></li>
+ <li>replaced</li>
+ <li>overridden</li>
+ <li>deleted</li>
+ <li>rendered</li>
+ <li>gathered</li>
+ <li>parsed</li>
+ </ul>
+ </td>
+ <td>
+ <div>The state the configuration should be left in</div>
+ </td>
+ </tr>
+ </table>
+ <br/>
+
+
+Notes
+-----
+
+.. note::
+ - Tested against Cisco IOS device with Version 17.13.01 on Cat9k on CML.
+ - This module works with connection ``network_cli``. See https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html
+
+
+
+Examples
+--------
+
+.. code-block:: yaml
+
+ # Using state merged
+
+ # Before state:
+ # -------------
+ # interface nve1
+ # no ip address
+ # source-interface Loopback1
+ # host-reachability protocol bgp
+ # member vni 10101 mcast-group 225.0.0.101
+ # member vni 10102 ingress-replication
+ # member vni 50901 vrf green
+ # member vni 10201 mcast-group 225.0.0.101
+ # member vni 10202 ingress-replication
+ # member vni 50902 vrf blue
+
+ # - name: Merge the provided configuration with the device configuration
+ # cisco.ios.ios_vxlan_vtep:
+ # config:
+ # - interface: nve1
+ # source_interface: loopback2
+ # member:
+ # vni:
+ # l2vni:
+ # - vni: 10101
+ # replication:
+ # type: ingress
+ # - vni: 10201
+ # replication:
+ # type: static
+ # mcast_group:
+ # ipv4: 225.0.0.101
+ # ipv6: FF0E:225::101
+ # l3vni:
+ # - vni: 50901
+ # vrf: blue
+ # state: merged
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "interface nve1",
+ # "source-interface loopback2",
+ # "no member vni 10101 mcast-group 225.0.0.101",
+ # "member vni 10101 ingress-replication",
+ # "no member vni 10201 mcast-group 225.0.0.101",
+ # "member vni 10201 mcast-group 225.0.0.101 FF0E:225::101",
+ # "no member vni 50901 vrf green",
+ # "no member vni 50902 vrf blue",
+ # "member vni 50901 vrf blue"
+ # ],
+
+ # After state:
+ # ------------
+ # interface nve1
+ # no ip address
+ # source-interface Loopback2
+ # host-reachability protocol bgp
+ # member vni 10102 ingress-replication
+ # member vni 10202 ingress-replication
+ # member vni 10101 ingress-replication
+ # member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ # member vni 50901 vrf blue
+
+ # Using state replaced
+
+ # Before state:
+ # -------------
+ # interface nve1
+ # no ip address
+ # source-interface Loopback2
+ # host-reachability protocol bgp
+ # member vni 10102 ingress-replication
+ # member vni 10202 ingress-replication
+ # member vni 10101 ingress-replication
+ # member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ # member vni 50901 vrf blue
+
+ # - name: Replaces the device configuration with the provided configuration
+ # cisco.ios.ios_vxlan_vtep:
+ # config:
+ # - interface: nve1
+ # source_interface: Loopback2
+ # member:
+ # vni:
+ # l2vni:
+ # - vni: 10101
+ # replication:
+ # type: static
+ # mcast_group:
+ # ipv6: FF0E:225::101
+ # - vni: 10201
+ # replication:
+ # type: static
+ # mcast_group:
+ # ipv6: FF0E:225::102
+ # state: replaced
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "interface nve1",
+ # "no member vni 10101 ingress-replication",
+ # "member vni 10101 mcast-group FF0E:225::101",
+ # "no member vni 10201 mcast-group 225.0.0.101 FF0E:225::101",
+ # "member vni 10201 mcast-group FF0E:225::102",
+ # "no member vni 10102 ingress-replication",
+ # "no member vni 10202 ingress-replication",
+ # "no member vni 50901 vrf blue"
+ # ],
+
+ # After state:
+ # ------------
+ # interface nve1
+ # no ip address
+ # source-interface Loopback2
+ # host-reachability protocol bgp
+ # member vni 10101 mcast-group FF0E:225::101
+ # member vni 10201 mcast-group FF0E:225::102
+
+ # Using state Deleted
+
+ # Before state:
+ # -------------
+ # interface nve1
+ # no ip address
+ # source-interface Loopback2
+ # host-reachability protocol bgp
+ # member vni 10101 mcast-group FF0E:225::101
+ # member vni 10201 mcast-group FF0E:225::102
+
+ # - name: "Delete VXLAN VTEP interface"
+ # cisco.ios.ios_vxlan_vtep:
+ # config:
+ # - interface: nve1
+ # state: deleted
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "interface nve1",
+ # "no source-interface Loopback2",
+ # "no host-reachability protocol bgp",
+ # "no member vni 10101 mcast-group FF0E:225::101",
+ # "no member vni 10201 mcast-group FF0E:225::102"
+ # ],
+
+ # After state:
+ # -------------
+ # interface nve1
+ # no ip address
+
+ # Using state Deleted with member VNIs
+
+ # Before state:
+ # -------------
+ # interface nve1
+ # no ip address
+ # source-interface Loopback2
+ # host-reachability protocol bgp
+ # member vni 10101 mcast-group FF0E:225::101
+ # member vni 10102 mcast-group 225.0.0.101
+ # member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+
+ # - name: "Delete VXLAN VTEP interface with member VNIs"
+ # cisco.ios.ios_vxlan_vtep:
+ # config:
+ # - interface: nve1
+ # source_interface: Loopback2
+ # member:
+ # vni:
+ # l2vni:
+ # - vni: 10101
+ # - vni: 10102
+ # state: deleted
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "interface nve1",
+ # "no member vni 10101 mcast-group FF0E:225::101",
+ # "no member vni 10102 mcast-group 225.0.0.101"
+ # ],
+
+ # After state:
+ # -------------
+ # interface nve1
+ # no ip address
+ # source-interface Loopback2
+ # host-reachability protocol bgp
+ # member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+
+ # Using state Deleted with no config
+
+ # Before state:
+ # -------------
+ # interface nve1
+ # no ip address
+ # source-interface Loopback2
+ # host-reachability protocol bgp
+ # member vni 10101 mcast-group FF0E:225::101
+ # member vni 10201 mcast-group FF0E:225::102
+
+ # - name: "Delete VXLAN VTEP interface with no config"
+ # cisco.ios.ios_vxlan_vtep:
+ # state: deleted
+
+ # Commands Fired:
+ # ---------------
+ # "commands": [
+ # "interface nve1",
+ # "no source-interface Loopback2",
+ # "no host-reachability protocol bgp",
+ # "no member vni 10101 mcast-group FF0E:225::101",
+ # "no member vni 10201 mcast-group FF0E:225::102"
+ # ],
+
+ # After state:
+ # -------------
+ # interface nve1
+ # no ip address
+
+
+
+Return Values
+-------------
+Common return values are documented `here <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module:
+
+.. raw:: html
+
+ <table border=0 cellpadding=0 class="documentation-table">
+ <tr>
+ <th colspan="1">Key</th>
+ <th>Returned</th>
+ <th width="100%">Description</th>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>after</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when changed</td>
+ <td>
+ <div>The resulting configuration after module execution.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>before</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>merged</code>, <code>replaced</code>, <code>overridden</code>, <code>deleted</code> or <code>purged</code></td>
+ <td>
+ <div>The configuration prior to the module execution.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>commands</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ </div>
+ </td>
+ <td>when <em>state</em> is <code>merged</code>, <code>replaced</code>, <code>overridden</code>, <code>deleted</code> or <code>purged</code></td>
+ <td>
+ <div>The set of commands pushed to the remote device.</div>
+ <br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;interface nve1&#x27;, &#x27;source-interface Loopback1&#x27;, &#x27;host-reachability protocol bgp&#x27;, &#x27;member vni 10101 ingress-replication&#x27;]</div>
+ </td>
+ </tr>
+ </table>
+ <br/><br/>
+
+
+Status
+------
+
+
+Authors
+~~~~~~~
+
+- Padmini Priyadarshini Sivaraj (@PadminiSivaraj)
diff --git a/ansible_collections/cisco/ios/meta/runtime.yml b/ansible_collections/cisco/ios/meta/runtime.yml
index e7c99024e..4a4bd852d 100644
--- a/ansible_collections/cisco/ios/meta/runtime.yml
+++ b/ansible_collections/cisco/ios/meta/runtime.yml
@@ -15,6 +15,10 @@ plugin_routing:
redirect: cisco.ios.ios
config:
redirect: cisco.ios.ios
+ evpn_global:
+ redirect: cisco.ios.ios
+ evpn_evi:
+ redirect: cisco.ios.ios
facts:
redirect: cisco.ios.ios
hostname:
@@ -35,6 +39,10 @@ plugin_routing:
redirect: cisco.ios.ios
ios_config:
redirect: cisco.ios.ios
+ ios_evpn_global:
+ redirect: cisco.ios.ios
+ ios_evpn_evi:
+ redirect: cisco.ios.ios
ios_facts:
redirect: cisco.ios.ios
ios_hostname:
@@ -43,8 +51,6 @@ plugin_routing:
redirect: cisco.ios.ios
ios_lldp:
redirect: cisco.ios.ios
- ios_logging:
- redirect: cisco.ios.ios
ios_logging_global:
redirect: cisco.ios.ios
ios_ntp:
@@ -65,6 +71,8 @@ plugin_routing:
redirect: cisco.ios.ios
ios_system:
redirect: cisco.ios.ios
+ ios_vxlan_vtep:
+ redirect: cisco.ios.ios
l2_interfaces:
redirect: cisco.ios.ios
l3_interfaces:
@@ -113,6 +121,8 @@ plugin_routing:
redirect: cisco.ios.ios
vrf:
redirect: cisco.ios.ios
+ vxlan_vtep:
+ redirect: cisco.ios.ios
modules:
acl_interfaces:
redirect: cisco.ios.ios_acl_interfaces
@@ -131,6 +141,10 @@ plugin_routing:
redirect: cisco.ios.ios_command
config:
redirect: cisco.ios.ios_config
+ evpn_global:
+ redirect: cisco.ios.ios_evpn_global
+ evpn_evi:
+ redirect: cisco.ios.ios_evpn_evi
facts:
redirect: cisco.ios.ios_facts
hostname:
@@ -149,10 +163,6 @@ plugin_routing:
deprecation:
removal_date: "2024-06-01"
warning_text: See the plugin documentation for more details
- ios_logging:
- deprecation:
- removal_date: "2023-06-01"
- warning_text: See the plugin documentation for more details
ios_ntp:
deprecation:
removal_date: "2024-01-01"
@@ -181,11 +191,6 @@ plugin_routing:
redirect: cisco.ios.ios_lldp_global
lldp_interfaces:
redirect: cisco.ios.ios_lldp_interfaces
- logging:
- deprecation:
- removal_date: "2023-06-01"
- warning_text: See the plugin documentation for more details
- redirect: cisco.ios.ios_logging
logging_global:
redirect: cisco.ios.ios_logging_global
ntp:
@@ -217,4 +222,6 @@ plugin_routing:
redirect: cisco.ios.ios_vlans
vrf:
redirect: cisco.ios.ios_vrf
+ vxlan_vtep:
+ redirect: cisco.ios.ios_vxlan_vtep
requires_ansible: ">=2.9.10"
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_address_family/bgp_address_family.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_address_family/bgp_address_family.py
index a52e3787c..18fed7891 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_address_family/bgp_address_family.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_address_family/bgp_address_family.py
@@ -340,7 +340,7 @@ class Bgp_address_familyArgs(object): # pylint: disable=R0903
"type": "dict",
"options": {
"set": {"type": "bool"},
- "number": {"type": "int"},
+ "number": {"type": "str"},
"dual_as": {"type": "bool"},
"no_prepend": {
"type": "dict",
@@ -367,7 +367,6 @@ class Bgp_address_familyArgs(object): # pylint: disable=R0903
"warning_only": {"type": "bool"},
},
},
- "next_hop_self": {"type": "bool"},
"nexthop_self": {
"type": "dict",
"options": {"set": {"type": "bool"}, "all": {"type": "bool"}},
@@ -440,7 +439,7 @@ class Bgp_address_familyArgs(object): # pylint: disable=R0903
"out": {"type": "bool"},
},
},
- "remote_as": {"type": "int"},
+ "remote_as": {"type": "str"},
"remove_private_as": {
"type": "dict",
"options": {
@@ -814,6 +813,19 @@ class Bgp_address_familyArgs(object): # pylint: disable=R0903
"type": "dict",
"options": {"name": {"type": "str"}, "filter": {"type": "bool"}},
},
+ "advertise": {
+ "type": "dict",
+ "options": {
+ "afi": {
+ "type": "str",
+ "choices": ["l2vpn"],
+ },
+ "safi": {
+ "type": "str",
+ "choices": ["evpn"],
+ },
+ },
+ },
},
},
},
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py
index 38c4e1ab3..21bb051c3 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py
@@ -940,6 +940,7 @@ class Bgp_globalArgs(object): # pylint: disable=R0903
"choices": [
"merged",
"replaced",
+ "overridden",
"deleted",
"purged",
"gathered",
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_evi/__init__.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_evi/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_evi/__init__.py
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_evi/evpn_evi.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_evi/evpn_evi.py
new file mode 100644
index 000000000..021e1ed81
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_evi/evpn_evi.py
@@ -0,0 +1,91 @@
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+#############################################
+# WARNING #
+#############################################
+#
+# This file is auto generated by the
+# ansible.content_builder.
+#
+# Manually editing this file is not advised.
+#
+# To update the argspec make the desired changes
+# in the documentation in the module file and re-run
+# ansible.content_builder commenting out
+# the path to external 'docstring' in build.yaml.
+#
+##############################################
+
+"""
+The arg spec for the ios_evpn_evi module
+"""
+
+
+class Evpn_eviArgs(object): # pylint: disable=R0903
+ """The arg spec for the ios_evpn_evi module"""
+
+ argument_spec = {
+ "config": {
+ "type": "list",
+ "elements": "dict",
+ "options": {
+ "evi": {"type": "int", "required": True},
+ "default_gateway": {
+ "type": "dict",
+ "options": {
+ "advertise": {
+ "type": "dict",
+ "options": {
+ "enable": {"type": "bool"},
+ "disable": {"type": "bool"},
+ },
+ },
+ },
+ },
+ "ip": {
+ "type": "dict",
+ "options": {
+ "local_learning": {
+ "type": "dict",
+ "options": {
+ "enable": {"type": "bool"},
+ "disable": {"type": "bool"},
+ },
+ },
+ },
+ },
+ "encapsulation": {
+ "type": "str",
+ "choices": ["vxlan"],
+ "default": "vxlan",
+ },
+ "replication_type": {
+ "type": "str",
+ "choices": ["ingress", "static"],
+ },
+ "route_distinguisher": {"type": "str"},
+ },
+ },
+ "running_config": {"type": "str"},
+ "state": {
+ "type": "str",
+ "choices": [
+ "merged",
+ "replaced",
+ "overridden",
+ "deleted",
+ "gathered",
+ "rendered",
+ "parsed",
+ ],
+ "default": "merged",
+ },
+ } # pylint: disable=C0301
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_global/__init__.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_global/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_global/__init__.py
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_global/evpn_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_global/evpn_global.py
new file mode 100644
index 000000000..acdb0c759
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/evpn_global/evpn_global.py
@@ -0,0 +1,93 @@
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+#############################################
+# WARNING #
+#############################################
+#
+# This file is auto generated by the
+# ansible.content_builder.
+#
+# Manually editing this file is not advised.
+#
+# To update the argspec make the desired changes
+# in the documentation in the module file and re-run
+# ansible.content_builder commenting out
+# the path to external 'docstring' in build.yaml.
+#
+##############################################
+
+"""
+The arg spec for the ios_evpn_global module
+"""
+
+
+class Evpn_globalArgs(object): # pylint: disable=R0903
+ """The arg spec for the ios_evpn_global module"""
+
+ argument_spec = {
+ "config": {
+ "type": "dict",
+ "options": {
+ "default_gateway": {
+ "type": "dict",
+ "options": {"advertise": {"type": "bool"}},
+ },
+ "flooding_suppression": {
+ "type": "dict",
+ "options": {
+ "address_resolution": {
+ "type": "dict",
+ "options": {"disable": {"type": "bool"}},
+ },
+ },
+ },
+ "ip": {
+ "type": "dict",
+ "options": {
+ "local_learning": {
+ "type": "dict",
+ "options": {"disable": {"type": "bool"}},
+ },
+ },
+ },
+ "replication_type": {
+ "type": "str",
+ "choices": ["ingress", "static"],
+ },
+ "route_target": {
+ "type": "dict",
+ "options": {
+ "auto": {
+ "type": "dict",
+ "options": {"vni": {"type": "bool"}},
+ },
+ },
+ },
+ "router_id": {
+ "type": "str",
+ },
+ },
+ },
+ "running_config": {"type": "str"},
+ "state": {
+ "type": "str",
+ "choices": [
+ "merged",
+ "replaced",
+ "overridden",
+ "deleted",
+ "rendered",
+ "gathered",
+ "parsed",
+ ],
+ "default": "merged",
+ },
+ } # pylint: disable=C0301
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/lacp.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/lacp.py
index 3e346db12..dff90d45f 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/lacp.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/lacp.py
@@ -50,7 +50,15 @@ class LacpArgs(object):
},
"running_config": {"type": "str"},
"state": {
- "choices": ["merged", "replaced", "deleted", "rendered", "parsed", "gathered"],
+ "choices": [
+ "merged",
+ "replaced",
+ "overridden",
+ "deleted",
+ "rendered",
+ "parsed",
+ "gathered",
+ ],
"default": "merged",
"type": "str",
},
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py
index 841e34bed..f7b699826 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py
@@ -61,7 +61,15 @@ class Lldp_globalArgs(object):
},
"running_config": {"type": "str"},
"state": {
- "choices": ["merged", "replaced", "deleted", "rendered", "parsed", "gathered"],
+ "choices": [
+ "merged",
+ "replaced",
+ "overridden",
+ "deleted",
+ "rendered",
+ "parsed",
+ "gathered",
+ ],
"default": "merged",
"type": "str",
},
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ping/ping.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ping/ping.py
index f89779d06..8de060b50 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ping/ping.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ping/ping.py
@@ -37,6 +37,7 @@ class PingArgs(object): # pylint: disable=R0903
"dest": {"required": True, "type": "str"},
"df_bit": {"default": False, "type": "bool"},
"source": {"type": "str"},
+ "size": {"type": "int"},
"ingress": {"type": "str"},
"egress": {"type": "str"},
"timeout": {"type": "int"},
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/service/service.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/service/service.py
index 76d2a3e34..238fc64a2 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/service/service.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/service/service.py
@@ -110,6 +110,7 @@ class ServiceArgs(object): # pylint: disable=R0903
"choices": [
"merged",
"replaced",
+ "overridden",
"deleted",
"gathered",
"rendered",
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/snmp_server/snmp_server.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/snmp_server/snmp_server.py
index d0473cc97..446a8225b 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/snmp_server/snmp_server.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/snmp_server/snmp_server.py
@@ -13,15 +13,16 @@ __metaclass__ = type
#############################################
#
# This file is auto generated by the
-# cli_rm_builder.
+# ansible.content_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.
+# in the documentation in the module file and re-run
+# ansible.content_builder commenting out
+# the path to external 'docstring' in build.yaml.
#
-#############################################
+##############################################
"""
The arg spec for the ios_snmp_server module
@@ -34,7 +35,10 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
argument_spec = {
"config": {
"options": {
- "accounting": {"options": {"command": {"type": "str"}}, "type": "dict"},
+ "accounting": {
+ "options": {"command": {"type": "str"}},
+ "type": "dict",
+ },
"cache": {"type": "int"},
"chassis_id": {"type": "str"},
"communities": {
@@ -52,7 +56,10 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"contact": {"type": "str"},
"context": {"elements": "str", "type": "list"},
"drop": {
- "options": {"unknown_user": {"type": "bool"}, "vrf_traffic": {"type": "bool"}},
+ "options": {
+ "unknown_user": {"type": "bool"},
+ "vrf_traffic": {"type": "bool"},
+ },
"type": "dict",
},
"engine_id": {
@@ -82,7 +89,11 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"elements": "dict",
"options": {
"context": {"type": "str"},
- "version_option": {"choices": ["auth", "noauth", "priv"], "type": "str"},
+ "match": {"choices": ["exact", "prefix"], "type": "str"},
+ "version_option": {
+ "choices": ["auth", "noauth", "priv"],
+ "type": "str",
+ },
"group": {"type": "str"},
"notify": {"type": "str"},
"read": {"type": "str"},
@@ -101,7 +112,10 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"community_string": {"type": "str"},
"traps": {"type": "list", "elements": "str"},
"version": {"choices": ["1", "2c", "3"], "type": "str"},
- "version_option": {"choices": ["auth", "noauth", "priv"], "type": "str"},
+ "version_option": {
+ "choices": ["auth", "noauth", "priv"],
+ "type": "str",
+ },
"vrf": {"type": "str"},
},
"type": "list",
@@ -116,7 +130,10 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"type": "dict",
},
"ip": {
- "options": {"dscp": {"type": "int"}, "precedence": {"type": "int"}},
+ "options": {
+ "dscp": {"type": "int"},
+ "precedence": {"type": "int"},
+ },
"type": "dict",
},
"location": {"type": "str"},
@@ -145,6 +162,7 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"trap_timeout": {"type": "int"},
"traps": {
"options": {
+ "aaa_server": {"type": "bool"},
"auth_framework": {
"options": {
"sec_violation": {"type": "bool"},
@@ -188,6 +206,22 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
},
"type": "dict",
},
+ "bulkstat": {
+ "options": {
+ "enable": {"type": "bool"},
+ "collection": {"type": "bool"},
+ "transfer": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "call_home": {
+ "options": {
+ "enable": {"type": "bool"},
+ "message_send_fail": {"type": "bool"},
+ "server_fail": {"type": "bool"},
+ },
+ "type": "dict",
+ },
"casa": {"type": "bool"},
"cef": {
"options": {
@@ -204,7 +238,10 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"config_copy": {"type": "bool"},
"config_ctid": {"type": "bool"},
"cpu": {
- "options": {"enable": {"type": "bool"}, "threshold": {"type": "bool"}},
+ "options": {
+ "enable": {"type": "bool"},
+ "threshold": {"type": "bool"},
+ },
"type": "dict",
},
"dhcp": {"type": "bool"},
@@ -218,19 +255,39 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
},
"eigrp": {"type": "bool"},
"entity": {"type": "bool"},
+ "entity_diag": {
+ "options": {
+ "boot_up_fail": {"type": "bool"},
+ "enable": {"type": "bool"},
+ "hm_test_recover": {"type": "bool"},
+ "hm_thresh_reached": {"type": "bool"},
+ "scheduled_test_fail": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "entity_perf": {
+ "options": {
+ "enable": {"type": "bool"},
+ "throughput_notif": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "entity_state": {"type": "bool"},
"energywise": {"type": "bool"},
"envmon": {
"options": {
+ "enable": {"type": "bool"},
"fan": {
"options": {
- "shutdown": {"type": "bool"},
"enable": {"type": "bool"},
+ "shutdown": {"type": "bool"},
"status": {"type": "bool"},
"supply": {"type": "bool"},
"temperature": {"type": "bool"},
},
"type": "dict",
},
+ "fan_enable": {"type": "bool"},
"shutdown": {"type": "bool"},
"status": {"type": "bool"},
"supply": {"type": "bool"},
@@ -238,6 +295,7 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
},
"type": "dict",
},
+ "errdisable": {"type": "bool"},
"ethernet": {
"options": {
"cfm": {
@@ -275,8 +333,24 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
},
"type": "dict",
},
+ "ether_oam": {"type": "bool"},
"event_manager": {"type": "bool"},
- "flowmon": {"type": "bool"},
+ "flash": {
+ "options": {
+ "enable": {"type": "bool"},
+ "insertion": {"type": "bool"},
+ "lowspace": {"type": "bool"},
+ "removal": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "flex_links": {
+ "options": {
+ "enable": {"type": "bool"},
+ "status": {"type": "bool"},
+ },
+ "type": "dict",
+ },
"firewall": {
"options": {
"enable": {"type": "bool"},
@@ -284,6 +358,7 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
},
"type": "dict",
},
+ "flowmon": {"type": "bool"},
"frame_relay": {
"options": {
"enable": {"type": "bool"},
@@ -343,6 +418,15 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"type": "dict",
},
"ipsla": {"type": "bool"},
+ "isis": {"type": "bool"},
+ "l2tc": {
+ "options": {
+ "enable": {"type": "bool"},
+ "sys_threshold": {"type": "bool"},
+ "threshold": {"type": "bool"},
+ },
+ "type": "dict",
+ },
"l2tun": {
"options": {
"pseudowire_status": {"type": "bool"},
@@ -350,9 +434,141 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
},
"type": "dict",
},
+ "license": {"type": "bool"},
+ "lisp": {"type": "bool"},
+ "local_auth": {"type": "bool"},
+ "mac_notification": {
+ "options": {
+ "enable": {"type": "bool"},
+ "change": {"type": "bool"},
+ "move": {"type": "bool"},
+ "threshold": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "memory": {
+ "options": {
+ "enable": {"type": "bool"},
+ "bufferpeak": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "mpls": {
+ "options": {
+ "fast_reroute": {
+ "options": {
+ "enable": {"type": "bool"},
+ "protected": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "ldp": {
+ "options": {
+ "enable": {"type": "bool"},
+ "pv_limit": {"type": "bool"},
+ "session_down": {"type": "bool"},
+ "session_up": {"type": "bool"},
+ "threshold": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "rfc": {
+ "options": {
+ "ldp": {
+ "options": {
+ "enable": {"type": "bool"},
+ "pv_limit": {"type": "bool"},
+ "session_down": {"type": "bool"},
+ "session_up": {"type": "bool"},
+ "threshold": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "traffic_eng": {
+ "options": {
+ "enable": {"type": "bool"},
+ "down": {"type": "bool"},
+ "reoptimized": {"type": "bool"},
+ "reroute": {"type": "bool"},
+ "up": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "vpn": {
+ "options": {
+ "enable": {"type": "bool"},
+ "illegal_label": {"type": "bool"},
+ "max_thresh_cleared": {
+ "type": "bool",
+ },
+ "max_threshold": {"type": "bool"},
+ "mid_threshold": {"type": "bool"},
+ "vrf_down": {"type": "bool"},
+ "vrf_up": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ },
+ "type": "dict",
+ },
+ "traffic_eng": {
+ "options": {
+ "enable": {"type": "bool"},
+ "down": {"type": "bool"},
+ "reroute": {"type": "bool"},
+ "up": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "vpn": {
+ "options": {
+ "enable": {"type": "bool"},
+ "illegal_label": {"type": "bool"},
+ "max_thresh_cleared": {"type": "bool"},
+ "max_threshold": {"type": "bool"},
+ "mid_threshold": {"type": "bool"},
+ "vrf_down": {"type": "bool"},
+ "vrf_up": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ },
+ "type": "dict",
+ },
+ "mpls_vpn": {"type": "bool"},
"msdp": {"type": "bool"},
"mvpn": {"type": "bool"},
- "mpls_vpn": {"type": "bool"},
+ "nhrp": {
+ "options": {
+ "enable": {"type": "bool"},
+ "nhc": {
+ "options": {
+ "enable": {"type": "bool"},
+ "down": {"type": "bool"},
+ "up": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "nhp": {
+ "options": {
+ "enable": {"type": "bool"},
+ "down": {"type": "bool"},
+ "up": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "nhs": {
+ "options": {
+ "enable": {"type": "bool"},
+ "down": {"type": "bool"},
+ "up": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "quota_exceeded": {"type": "bool"},
+ },
+ "type": "dict",
+ },
"ospf": {
"options": {
"cisco_specific": {
@@ -362,11 +578,17 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"retransmit": {"type": "bool"},
"state_change": {
"options": {
- "nssa_trans_change": {"type": "bool"},
+ "nssa_trans_change": {
+ "type": "bool",
+ },
"shamlink": {
"options": {
- "interface": {"type": "bool"},
- "neighbor": {"type": "bool"},
+ "interface": {
+ "type": "bool",
+ },
+ "neighbor": {
+ "type": "bool",
+ },
},
"type": "dict",
},
@@ -383,6 +605,42 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
},
"type": "dict",
},
+ "ospfv3": {
+ "options": {
+ "errors": {
+ "options": {
+ "enable": {"type": "bool"},
+ "bad_packet": {"type": "bool"},
+ "config_error": {"type": "bool"},
+ "virt_bad_packet": {"type": "bool"},
+ "virt_config_error": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "rate_limit": {"type": "int"},
+ "state_change": {
+ "options": {
+ "enable": {"type": "bool"},
+ "if_state_change": {"type": "bool"},
+ "neighbor_restart_helper_status_change": {
+ "type": "bool",
+ },
+ "neighbor_state_change": {"type": "bool"},
+ "nssa_translator_status_change": {
+ "type": "bool",
+ },
+ "restart_status_change": {"type": "bool"},
+ "virtif_state_change": {"type": "bool"},
+ "vn_restart_helper_status_change": {
+ "type": "bool",
+ },
+ "vn_state_change": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ },
+ "type": "dict",
+ },
"pim": {
"options": {
"invalid_pim_message": {"type": "bool"},
@@ -392,19 +650,35 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
},
"type": "dict",
},
- "vrfmib": {
+ "pki": {"type": "bool"},
+ "port_security": {"type": "bool"},
+ "power_ethernet": {
"options": {
- "vrf_up": {"type": "bool"},
- "vrf_down": {"type": "bool"},
- "vnet_trunk_up": {"type": "bool"},
- "vnet_trunk_down": {"type": "bool"},
+ "enable": {"type": "bool"},
+ "group": {
+ "options": {
+ "slot_id": {"type": "int"},
+ "threshold": {"type": "int"},
+ },
+ "elements": "dict",
+ "type": "list",
+ },
+ "police": {"type": "bool"},
},
"type": "dict",
},
- "pki": {"type": "bool"},
- "rsvp": {"type": "bool"},
- "isis": {"type": "bool"},
"pw_vc": {"type": "bool"},
+ "rep": {"type": "bool"},
+ "rsvp": {"type": "bool"},
+ "rf": {"type": "bool"},
+ "smart_license": {
+ "options": {
+ "enable": {"type": "bool"},
+ "entitlement": {"type": "bool"},
+ "global": {"type": "bool"},
+ },
+ "type": "dict",
+ },
"snmp": {
"options": {
"authentication": {"type": "bool"},
@@ -415,10 +689,103 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
},
"type": "dict",
},
+ "stackwise": {"type": "bool"},
+ "stpx": {
+ "options": {
+ "enable": {"type": "bool"},
+ "inconsistency": {"type": "bool"},
+ "loop_inconsistency": {"type": "bool"},
+ "root_inconsistency": {"type": "bool"},
+ },
+ "type": "dict",
+ },
"syslog": {"type": "bool"},
"transceiver_all": {"type": "bool"},
+ "trustsec": {
+ "options": {
+ "authz_file_error": {"type": "bool"},
+ "cache_file_error": {"type": "bool"},
+ "enable": {"type": "bool"},
+ "keystore_file_error": {"type": "bool"},
+ "keystore_sync_fail": {"type": "bool"},
+ "random_number_fail": {"type": "bool"},
+ "src_entropy_fail": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "trustsec_interface": {
+ "options": {
+ "enable": {"type": "bool"},
+ "authc_fail": {"type": "bool"},
+ "authz_fail": {"type": "bool"},
+ "sap_fail": {"type": "bool"},
+ "supplicant_fail": {"type": "bool"},
+ "unauthorized": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "trustsec_policy": {
+ "options": {
+ "enable": {"type": "bool"},
+ "authz_sgacl_fail": {"type": "bool"},
+ "peer_policy_updated": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "trustsec_server": {
+ "options": {
+ "enable": {"type": "bool"},
+ "provision_secret": {"type": "bool"},
+ "radius_server": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "trustsec_sxp": {
+ "options": {
+ "enable": {"type": "bool"},
+ "binding_conflict": {"type": "bool"},
+ "binding_err": {"type": "bool"},
+ "binding_expn_fail": {"type": "bool"},
+ "conn_config_err": {"type": "bool"},
+ "conn_down": {"type": "bool"},
+ "conn_srcaddr_err": {"type": "bool"},
+ "conn_up": {"type": "bool"},
+ "msg_parse_err": {"type": "bool"},
+ "oper_nodeid_change": {"type": "bool"},
+ },
+ "type": "dict",
+ },
"tty": {"type": "bool"},
+ "udld": {
+ "options": {
+ "enable": {"type": "bool"},
+ "link_fail_rpt": {"type": "bool"},
+ "status_change": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "vlan_membership": {"type": "bool"},
+ "vlancreate": {"type": "bool"},
+ "vlandelete": {"type": "bool"},
+ "vrfmib": {
+ "options": {
+ "vrf_up": {"type": "bool"},
+ "vrf_down": {"type": "bool"},
+ "vnet_trunk_up": {"type": "bool"},
+ "vnet_trunk_down": {"type": "bool"},
+ },
+ "type": "dict",
+ },
"vrrp": {"type": "bool"},
+ "vswitch": {
+ "options": {
+ "dual_active": {"type": "bool"},
+ "enable": {"type": "bool"},
+ "vsl": {"type": "bool"},
+ },
+ "type": "dict",
+ },
+ "vtp": {"type": "bool"},
},
"type": "dict",
},
@@ -431,17 +798,29 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"no_log": False,
"type": "dict",
"options": {
- "algorithm": {"type": "str", "choices": ["md5", "sha"]},
- "password": {"type": "str", "no_log": True},
+ "algorithm": {
+ "type": "str",
+ "choices": ["md5", "sha"],
+ },
+ "password": {
+ "type": "str",
+ "no_log": True,
+ },
},
},
"encryption": {
"no_log": False,
"type": "dict",
"options": {
- "priv": {"type": "str", "choices": ["3des", "aes", "des"]},
+ "priv": {
+ "type": "str",
+ "choices": ["3des", "aes", "des"],
+ },
"priv_option": {"type": "str"},
- "password": {"type": "str", "no_log": True},
+ "password": {
+ "type": "str",
+ "no_log": True,
+ },
},
},
"group": {"type": "str"},
@@ -449,7 +828,10 @@ class Snmp_serverArgs(object): # pylint: disable=R0903
"udp_port": {"type": "int"},
"username": {"type": "str"},
"version": {"choices": ["v1", "v2c", "v3"], "type": "str"},
- "version_option": {"choices": ["encrypted"], "type": "str"},
+ "version_option": {
+ "choices": ["encrypted"],
+ "type": "str",
+ },
"vrf": {"type": "str"},
},
"type": "list",
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/vlans.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/vlans.py
index a3b0b6acd..9db593dcc 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/vlans.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/vlans.py
@@ -55,9 +55,17 @@ class VlansArgs(object):
"associated": {"type": "list", "elements": "int"},
},
},
+ "member": {
+ "type": "dict",
+ "options": {
+ "vni": {"type": "int", "required": True},
+ "evi": {"type": "int"},
+ },
+ },
},
"type": "list",
},
+ "configuration": {"type": "bool"},
"running_config": {"type": "str"},
"state": {
"choices": [
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vxlan_vtep/__init__.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vxlan_vtep/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vxlan_vtep/__init__.py
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vxlan_vtep/vxlan_vtep.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vxlan_vtep/vxlan_vtep.py
new file mode 100644
index 000000000..b5eb35c07
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vxlan_vtep/vxlan_vtep.py
@@ -0,0 +1,102 @@
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+#############################################
+# WARNING #
+#############################################
+#
+# This file is auto generated by the
+# ansible.content_builder.
+#
+# Manually editing this file is not advised.
+#
+# To update the argspec make the desired changes
+# in the documentation in the module file and re-run
+# ansible.content_builder commenting out
+# the path to external 'docstring' in build.yaml.
+#
+##############################################
+
+"""
+The arg spec for the ios_vxlan_vtep module
+"""
+
+
+class Vxlan_vtepArgs(object): # pylint: disable=R0903
+ """The arg spec for the ios_vxlan_vtep module"""
+
+ argument_spec = {
+ "config": {
+ "type": "list",
+ "elements": "dict",
+ "options": {
+ "interface": {"type": "str", "required": True},
+ "source_interface": {"type": "str"},
+ "host_reachability_bgp": {
+ "type": "bool",
+ },
+ "member": {
+ "type": "dict",
+ "options": {
+ "vni": {
+ "type": "dict",
+ "options": {
+ "l2vni": {
+ "type": "list",
+ "elements": "dict",
+ "options": {
+ "vni": {"type": "int"},
+ "replication": {
+ "type": "dict",
+ "options": {
+ "type": {
+ "type": "str",
+ "choices": ["ingress", "static"],
+ },
+ "mcast_group": {
+ "type": "dict",
+ "options": {
+ "ipv4": {"type": "str"},
+ "ipv6": {"type": "str"},
+ },
+ },
+ },
+ },
+ },
+ },
+ "l3vni": {
+ "type": "list",
+ "elements": "dict",
+ "options": {
+ "vni": {"type": "int"},
+ "vrf": {"type": "str"},
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ "running_config": {"type": "str"},
+ "state": {
+ "type": "str",
+ "choices": [
+ "merged",
+ "replaced",
+ "overridden",
+ "deleted",
+ "rendered",
+ "gathered",
+ "parsed",
+ ],
+ "default": "merged",
+ },
+ } # pylint: disable=C0301
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/acls.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/acls.py
index 9d29555cc..164c75c40 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/acls.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/acls.py
@@ -15,6 +15,7 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
+from ansible.module_utils._text import to_text
from ansible.module_utils.six import iteritems
from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module import (
ResourceModule,
@@ -149,11 +150,28 @@ class Acls(ResourceModule):
entry["afi"] = afi
return entry
+ def pop_remark(r_entry, afi):
+ """Takes out remarks from ace entry as remarks not same
+ does not mean the ace entry to be re-introduced
+ """
+ if r_entry.get("remarks"):
+ return r_entry.pop("remarks")
+ else:
+ return {}
+
for wseq, wentry in iteritems(want):
hentry = have.pop(wseq, {})
+ rem_hentry, rem_wentry = {}, {}
+
if hentry:
hentry = self.sanitize_protocol_options(wentry, hentry)
- if hentry != wentry:
+
+ if hentry != wentry: # will let in if ace is same but remarks is not same
+ if hentry:
+ rem_hentry["remarks"] = pop_remark(hentry, afi)
+ if wentry:
+ rem_wentry["remarks"] = pop_remark(wentry, afi)
+
if hentry:
if self.state == "merged":
self._module.fail_json(
@@ -164,24 +182,51 @@ class Acls(ResourceModule):
),
)
else: # other action states
- if hentry.get("remarks"): # remove remark if not in want
- for rems in hentry.get("remarks"):
- if rems not in wentry.get("remarks", {}):
- self.addcmd({"remarks": rems}, "remarks", negate=True)
- else: # remove ace if not in want
+ if rem_hentry.get("remarks"): # remove remark if not in want
+ for k_hrems, hrems in rem_hentry.get("remarks").items():
+ if k_hrems not in rem_wentry.get("remarks", {}).keys():
+ if self.state in ["replaced", "overridden"]:
+ self.addcmd(
+ {
+ "remarks": hrems,
+ "sequence": hentry.get("sequence", ""),
+ },
+ "remarks_no_data",
+ negate=True,
+ )
+ break
+ else:
+ self.addcmd(
+ {
+ "remarks": hrems,
+ "sequence": hentry.get("sequence", ""),
+ },
+ "remarks",
+ negate=True,
+ )
+ # remove ace if not in want
+ if hentry != wentry:
self.addcmd(add_afi(hentry, afi), "aces", negate=True)
- if wentry.get("remarks"): # add remark if not in have
- for rems in wentry.get("remarks"):
- if rems not in hentry.get("remarks", {}):
- self.addcmd({"remarks": rems}, "remarks")
- else: # add ace if not in have
+ if rem_wentry.get("remarks"): # add remark if not in have
+ for k_wrems, wrems in rem_wentry.get("remarks").items():
+ if k_wrems not in rem_hentry.get("remarks", {}).keys():
+ self.addcmd(
+ {"remarks": wrems, "sequence": hentry.get("sequence", "")},
+ "remarks",
+ )
+ # add ace if not in have
+ if hentry != wentry:
self.addcmd(add_afi(wentry, afi), "aces")
# remove remaining entries from have aces list
for hseq in have.values():
if hseq.get("remarks"): # remove remarks that are extra in have
- for rems in hseq.get("remarks"):
- self.addcmd({"remarks": rems}, "remarks", negate=True)
+ for krems, rems in hseq.get("remarks").items():
+ self.addcmd(
+ {"remarks": rems, "sequence": hseq.get("sequence", "")},
+ "remarks",
+ negate=True,
+ )
else: # remove extra aces
self.addcmd(add_afi(hseq, afi), "aces", negate=True)
@@ -192,6 +237,7 @@ class Acls(ResourceModule):
list(wace.get("protocol_options"))[0] == hace.get("protocol")
):
hace.pop("protocol")
+ hace["protocol_options"] = wace.get("protocol_options")
return hace
def acl_name_cmd(self, name, afi, acl_type):
@@ -224,11 +270,17 @@ class Acls(ResourceModule):
for acl in each.get("acls"): # check each acl for aces
temp_aces = {}
if acl.get("aces"):
- temp_rem = [] # remarks if defined in an ace
+ rem_idx = 0 # remarks if defined in an ace
for ace in acl.get("aces"): # each ace turned to dict
- if ace.get("destination") and ace.get("destination", {}).get(
- "port_protocol",
- {},
+ if (
+ ace.get("destination")
+ and ace.get("destination", {}).get(
+ "port_protocol",
+ {},
+ )
+ and not ace.get("destination", {})
+ .get("port_protocol", {})
+ .get("range")
):
for k, v in (
ace.get("destination", {}).get("port_protocol", {}).items()
@@ -251,18 +303,25 @@ class Acls(ResourceModule):
),
)
- if ace.get("remarks"):
- en_name = str(acl.get("name")) + "remark"
- temp_rem.extend(ace.pop("remarks"))
+ if ace.get(
+ "remarks",
+ ): # index aces inside of each ace don't cluster them all
+ rem_ace = {}
+ # en_name = str(acl.get("name")) + "remark"
+ # temp_rem.extend(ace.pop("remarks"))
+ for remks in ace.get("remarks"):
+ rem_ace[remks.replace(" ", "_")] = remks
+ rem_idx += 1
+ ace["remarks"] = rem_ace
if ace.get("sequence"):
temp_aces.update({ace.get("sequence"): ace})
elif ace:
count += 1
- temp_aces.update({"_" + str(count): ace})
+ temp_aces.update({"_" + to_text(count): ace})
- if temp_rem: # add remarks to the temp ace
- temp_aces.update({en_name: {"remarks": temp_rem}})
+ # if temp_rem: # add remarks to the temp ace
+ # temp_aces.update({en_name: {"remarks": temp_rem}})
if acl.get("acl_type"): # update acl dict with req info
temp_acls.update(
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_address_family/bgp_address_family.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_address_family/bgp_address_family.py
index 36ea3e963..17cdd11fc 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_address_family/bgp_address_family.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_address_family/bgp_address_family.py
@@ -39,6 +39,7 @@ class Bgp_address_family(ResourceModule):
"""
parsers = [
+ "advertise",
"as_number", # generic
"aggregate_addresses",
"auto_summary",
@@ -336,9 +337,6 @@ class Bgp_address_family(ResourceModule):
neib["neighbor_address"] = neib.pop("ipv6_address")
if neib.get("ipv6_adddress"):
neib["neighbor_address"] = neib.pop("ipv6_adddress")
- # next_hop_self deprecated added nexthop_self
- if neib.get("next_hop_self"):
- neib["nexthop_self"] = {"set": neib.pop("next_hop_self")}
# prefix_list and prefix_lists
if neib.get("prefix_list"): # deprecated made list
neib["prefix_lists"] = [neib.pop("prefix_list")]
@@ -356,6 +354,12 @@ class Bgp_address_family(ResourceModule):
# slow_peer to slow_peer_options
if neib.get("slow_peer"): # only one slow_peer is allowed
neib["slow_peer_options"] = neib.pop("slow_peer")[0]
+ # we can skip deprecating these by handling the int to str conversion here
+ # int to float is not considered considering the size of as numbers
+ if neib.get("remote_as"):
+ neib["remote_as"] = str(neib.get("remote_as"))
+ if neib.get("local_as") and neib.get("local_as", {}).get("number"):
+ neib["local_as"]["number"] = str(neib["local_as"]["number"])
# make dict neighbors dict
tmp[neib[p_key[k]]] = neib
_af["neighbors"] = tmp
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/bgp_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/bgp_global.py
index 59881d622..c48cac946 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/bgp_global.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/bgp_global.py
@@ -148,7 +148,7 @@ class Bgp_global(ResourceModule):
"""Generate configuration commands to send based on
want, have and desired state.
"""
- if self.state in ["merged", "replaced"]:
+ if self.state in ["merged", "replaced", "overridden"]:
w_asn = self.want.get("as_number")
h_asn = self.have.get("as_number")
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_evi/__init__.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_evi/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_evi/__init__.py
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_evi/evpn_evi.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_evi/evpn_evi.py
new file mode 100644
index 000000000..240906637
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_evi/evpn_evi.py
@@ -0,0 +1,103 @@
+#
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+"""
+The ios_evpn_evi 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.rm_base.resource_module import (
+ ResourceModule,
+)
+from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import (
+ dict_merge,
+)
+
+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.evpn_evi import (
+ Evpn_eviTemplate,
+)
+
+
+class Evpn_evi(ResourceModule):
+ """
+ The ios_evpn_evi config class
+ """
+
+ def __init__(self, module):
+ super(Evpn_evi, self).__init__(
+ empty_fact_val={},
+ facts_module=Facts(module),
+ module=module,
+ resource="evpn_evi",
+ tmplt=Evpn_eviTemplate(),
+ )
+ self.parsers = [
+ "default_gateway.advertise.enable",
+ "default_gateway.advertise.disable",
+ "encapsulation",
+ "ip.local_learning.enable",
+ "ip.local_learning.disable",
+ "replication_type",
+ "route_distinguisher",
+ ]
+
+ 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 = {entry["evi"]: entry for entry in self.want}
+ haved = {entry["evi"]: entry for entry in self.have}
+
+ # if state is merged, merge want onto have and then compare
+ if self.state == "merged":
+ wantd = dict_merge(haved, wantd)
+
+ # if state is deleted, empty out wantd and set haved to wantd
+ if self.state == "deleted":
+ haved = {k: v for k, v in iteritems(haved) if k in wantd or not wantd}
+ wantd = {}
+
+ # 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.addcmd(have, "evi", negate=True)
+
+ 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 Evpn_evi network resource.
+ """
+ begin = len(self.commands)
+ self.compare(parsers=self.parsers, want=want, have=have)
+ if len(self.commands) != begin:
+ self.commands.insert(begin, self._tmplt.render(want or have, "evi", False))
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_global/__init__.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_global/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_global/__init__.py
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_global/evpn_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_global/evpn_global.py
new file mode 100644
index 000000000..bd6e10321
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/evpn_global/evpn_global.py
@@ -0,0 +1,98 @@
+#
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+"""
+The ios_evpn_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_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module import (
+ ResourceModule,
+)
+from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import (
+ dict_merge,
+)
+
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import Facts
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.evpn_global import (
+ Evpn_globalTemplate,
+)
+
+
+EVPN_GLOBAL_PARENT = "l2vpn evpn"
+
+
+class Evpn_global(ResourceModule):
+ """
+ The ios_evpn_global config class
+ """
+
+ def __init__(self, module):
+ super(Evpn_global, self).__init__(
+ empty_fact_val={},
+ facts_module=Facts(module),
+ module=module,
+ resource="evpn_global",
+ tmplt=Evpn_globalTemplate(),
+ )
+ self.parsers = [
+ "default_gateway.advertise",
+ "flooding_suppression.address_resolution.disable",
+ "ip.local_learning.disable",
+ "replication_type",
+ "route_target.auto.vni",
+ "router_id",
+ ]
+
+ 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 = self.want
+ haved = self.have
+
+ # if state is merged, merge want onto have and then compare
+ if self.state == "merged":
+ wantd = dict_merge(haved, wantd)
+
+ # remove superfluous config for deleted
+ if self.state == "deleted":
+ if haved:
+ self.commands.append("no " + EVPN_GLOBAL_PARENT)
+ wantd, haved = {}, {}
+
+ self._compare(want=wantd, have=haved)
+
+ 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 Evpn_global network resource.
+ """
+ begin = len(self.commands)
+ self.compare(parsers=self.parsers, want=want, have=have)
+ if len(self.commands) != begin:
+ self.commands.insert(begin, EVPN_GLOBAL_PARENT)
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/lacp.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/lacp.py
index 0420c347b..e09a53869 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/lacp.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/lacp.py
@@ -126,7 +126,7 @@ class Lacp(ConfigBase):
:returns: the commands necessary to migrate the current configuration
to the desired configuration
"""
- if self.state in ("merged", "replaced", "rendered") and not want:
+ if self.state in ("merged", "replaced", "overridden", "rendered") and not want:
self._module.fail_json(
msg="value of config parameter must not be empty for state {0}".format(self.state),
)
@@ -135,7 +135,7 @@ class Lacp(ConfigBase):
commands = self._state_deleted(want, have)
elif self.state in ("merged", "rendered"):
commands = self._state_merged(want, have)
- elif self.state == "replaced":
+ elif self.state in ["replaced", "overridden"]:
commands = self._state_replaced(want, have)
return commands
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/lldp_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/lldp_global.py
index c575bc7b0..34b466c52 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/lldp_global.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/lldp_global.py
@@ -140,24 +140,22 @@ class Lldp_global(ConfigBase):
to the desired configuration
"""
commands = []
- if self.state in ("merged", "replaced", "rendered") and not want:
+ if self.state in ("merged", "replaced", "overridden", "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":
+ elif self.state in ["replaced", "overridden"]:
commands = self._state_replaced(want, have)
return commands
def _state_replaced(self, want, have):
- """The command generator when state is replaced
+ """The command generator when state is replaced/overridden
:param want: the desired configuration as a dictionary
:param have: the current configuration as a dictionary
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/logging_global/logging_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/logging_global/logging_global.py
index 4eb442a0c..bfaab013b 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/logging_global/logging_global.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/logging_global/logging_global.py
@@ -108,9 +108,9 @@ class Logging_global(ResourceModule):
the `want` and `have` data with the `parsers` defined
for the Logging_global network resource.
"""
+ self._compare_complex_attrs(want, have)
self.compare(parsers=self.parsers, want=want, have=have)
self._compare_lists_attrs(want, have)
- self._compare_complex_attrs(want, have)
def _compare_lists_attrs(self, want, have):
"""Compare list of dict"""
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/ospfv2.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/ospfv2.py
index 2cbc53e17..1dd26f356 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/ospfv2.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/ospfv2.py
@@ -33,10 +33,6 @@ 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={},
@@ -46,39 +42,97 @@ class Ospfv2(ResourceModule):
tmplt=Ospfv2Template(),
)
+ self.parsers = [
+ "adjacency",
+ "address_family",
+ "auto_cost",
+ "bfd",
+ "capability.lls",
+ "capability.opaque",
+ "capability.transit",
+ "capability.vrf_lite",
+ "compatible",
+ "default_information",
+ "default_metric",
+ "discard_route",
+ "distance.admin_distance",
+ "distance.ospf",
+ "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.autoconfig",
+ "mpls.ldp.sync",
+ "mpls.traffic_eng",
+ "neighbor",
+ "nsf.cisco",
+ "nsf.ietf.disable",
+ "nsf.ietf.strict_lsa_checking",
+ "prefix_suppression",
+ "priority",
+ "queue_depth.hello.max_packets",
+ "queue_depth.hello.unlimited",
+ "queue_depth.update.max_packets",
+ "queue_depth.update.unlimited",
+ "router_id",
+ "shutdown",
+ "summary_address.not_advertise",
+ "summary_address.nssa_only",
+ "timers.throttle.lsa",
+ "timers.pacing.flood",
+ "timers.pacing.lsa_group",
+ "timers.pacing.retransmission",
+ "timers.throttle.spf",
+ "traffic_share",
+ "ttl_security",
+ ]
+
def execute_module(self):
"""Execute the module
:rtype: A dictionary
:returns: The result from module execution
"""
- self.gen_config()
- self.run_commands()
+ if self.state not in ["parsed", "gathered"]:
+ self.generate_commands()
+ self.run_commands()
return self.result
- def gen_config(self):
+ def generate_commands(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
"""
+ haved, wantd = dict(), dict()
+
if self.want:
- wantd = {}
for entry in self.want.get("processes", []):
+ entry = self._handle_deprecated(entry)
wantd.update({(entry["process_id"], entry.get("vrf")): entry})
- else:
- wantd = {}
+
if self.have:
- haved = {}
for entry in self.have.get("processes", []):
+ # entry = self._handle_deprecated(entry)
haved.update({(entry["process_id"], entry.get("vrf")): entry})
- else:
- haved = {}
# turn all lists of dicts into dicts prior to merge
for each in wantd, haved:
- self.list_to_dict(each)
+ if each:
+ self._list_to_dict(each)
+
# if state is merged, merge want onto have
if self.state == "merged":
wantd = dict_merge(haved, wantd)
@@ -103,61 +157,32 @@ class Ospfv2(ResourceModule):
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.compare(self.parsers, want, have)
self._areas_compare(want, have)
+ self._complex_compare(want, have)
if want.get("passive_interfaces"):
self._passive_interfaces_compare(want, have)
+ def _complex_compare(self, want, have):
+ complex_parsers = ["distribute_list.acls", "network"]
+ for _parser in complex_parsers:
+ if _parser == "distribute_list.acls":
+ wdist = want.get("distribute_list", {}).get("acls", {})
+ hdist = have.get("distribute_list", {}).get("acls", {})
+ else:
+ wdist = want.get(_parser, {})
+ hdist = have.get(_parser, {})
+ for key, wanting in iteritems(wdist):
+ haveing = hdist.pop(key, {})
+ if wanting != haveing:
+ if haveing and self.state in ["overridden", "replaced"]:
+ self.addcmd(haveing, _parser, negate=True)
+ self.addcmd(wanting, _parser, False)
+ for key, haveing in iteritems(hdist):
+ self.addcmd(haveing, _parser, negate=True)
+
def _areas_compare(self, want, have):
wareas = want.get("areas", {})
hareas = have.get("areas", {})
@@ -168,42 +193,40 @@ class Ospfv2(ResourceModule):
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",
+ "authentication",
+ "capability",
+ "default_cost",
+ "nssa",
+ "nssa.translate",
+ "sham_link",
+ "stub",
]
self.compare(parsers=parsers, want=want, have=have)
- self._area_compare_filters(want, have)
+ self._area_complex_compare(want, have, want.get("area_id"))
- 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 _area_complex_compare(self, want, have, area_id):
+ area_complex_parsers = ["filter_list", "ranges"]
+ for _parser in area_complex_parsers:
+ wantr = want.get(_parser, {})
+ haver = have.get(_parser, {})
+ for key, wanting in iteritems(wantr):
+ haveing = have.pop(key, {})
+ haveing["area_id"] = area_id
+ wanting["area_id"] = area_id
+ if wanting != haveing:
+ if haveing and self.state in ["overridden", "replaced"]:
+ self.addcmd(haveing, _parser, negate=True)
+ self.addcmd(wanting, _parser, False)
+ for key, haveing in iteritems(haver):
+ haveing["area_id"] = area_id
+ self.addcmd(haveing, _parser, negate=True)
def _passive_interfaces_compare(self, want, have):
- parsers = ["passive_interfaces"]
+ parsers = ["passive_interfaces.default", "passive_interfaces.interface"]
h_pi = None
for k, v in iteritems(want["passive_interfaces"]):
- h_pi = have.get("passive_interfaces", [])
- if h_pi and h_pi.get(k) and h_pi.get(k) != v:
+ h_pi = have.get("passive_interfaces", {})
+ if h_pi.get(k) and h_pi.get(k) != v:
for each in v["name"]:
h_interface_name = h_pi[k].get("name", [])
if each not in h_interface_name:
@@ -243,42 +266,51 @@ class Ospfv2(ResourceModule):
}
self.compare(
parsers=parsers,
- want={"passive_interface": temp},
+ want={"passive_interfaces": temp},
have=dict(),
)
elif k == "default":
self.compare(
parsers=parsers,
want=dict(),
- have={"passive_interface": {"default": True}},
+ have={"passive_interfaces": {"default": True}},
)
- def list_to_dict(self, param):
- if param:
- for _pid, proc in iteritems(param):
- for area in proc.get("areas", []):
- ranges = {}
- for entry in area.get("ranges", []):
- ranges.update({entry["address"]: entry})
- if bool(ranges):
- area["ranges"] = ranges
- filter_list = {}
- for entry in area.get("filter_list", []):
- filter_list.update({entry["direction"]: entry})
- if bool(filter_list):
- area["filter_list"] = filter_list
- temp = {}
- for entry in proc.get("areas", []):
- temp.update({entry["area_id"]: entry})
- proc["areas"] = temp
- if proc.get("distribute_list"):
- if "acls" in proc.get("distribute_list"):
- temp = {}
- for entry in proc["distribute_list"].get("acls", []):
- temp.update({entry["name"]: entry})
- proc["distribute_list"]["acls"] = temp
- if proc.get("passive_interfaces") and proc["passive_interfaces"].get("interface"):
- temp = {}
- for entry in proc["passive_interfaces"]["interface"].get("name", []):
- temp.update({entry: entry})
- proc["passive_interfaces"]["interface"]["name"] = temp
+ def _list_to_dict(self, param):
+ for _pid, proc in param.items():
+ # convert list to dict for areas
+ for area in proc.get("areas", []):
+ area["ranges"] = {entry["address"]: entry for entry in area.get("ranges", [])}
+ area["filter_list"] = {
+ entry["direction"]: entry for entry in area.get("filter_list", [])
+ }
+
+ proc["areas"] = {entry["area_id"]: entry for entry in proc.get("areas", [])}
+
+ # list to dict for distribute_list
+ distribute_list = proc.get("distribute_list", {})
+ if "acls" in distribute_list:
+ distribute_list["acls"] = {
+ entry["name"]: entry for entry in distribute_list["acls"]
+ }
+
+ # list to dict for passive_interfaces
+ passive_interfaces = proc.get("passive_interfaces", {}).get("interface", {})
+ if passive_interfaces.get("name"):
+ passive_interfaces["name"] = {entry: entry for entry in passive_interfaces["name"]}
+
+ # list to dict for network
+ if proc.get("network"):
+ proc["network"] = {entry["address"]: entry for entry in proc["network"]}
+
+ def _handle_deprecated(self, config):
+ if config.get("passive_interface"):
+ passive_interfaces = config.get("passive_interfaces", {})
+ interface = passive_interfaces.get("interface", {})
+ name_list = interface.get("name", [])
+ if not name_list:
+ name_list.append(config["passive_interface"])
+ else:
+ name_list.extend(config["passive_interface"])
+ del config["passive_interface"]
+ return config
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ping/ping.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ping/ping.py
index f2417f596..138cd5715 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ping/ping.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ping/ping.py
@@ -81,7 +81,7 @@ class Ping:
Returns the percent of packet loss, received packets, transmitted packets, and RTT data.
"""
- if type(ping_results) == list:
+ if isinstance(ping_results, list):
ping_results = ping_results[0]
ping_data = PingTemplate(lines=ping_results.splitlines())
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/prefix_lists/prefix_lists.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/prefix_lists/prefix_lists.py
index 7c4ebe5ec..210fb234d 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/prefix_lists/prefix_lists.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/prefix_lists/prefix_lists.py
@@ -63,12 +63,10 @@ class Prefix_lists(ResourceModule):
want, have and desired state.
"""
wantd = {entry["afi"]: entry for entry in self.want}
-
haved = {entry["afi"]: entry for entry in self.have}
- # Convert each of config list to dict
- for each in wantd, haved:
- self.list_to_dict(each)
+ self._prefix_list_transform(wantd)
+ self._prefix_list_transform(haved)
# if state is merged, merge want onto have and then compare
if self.state == "merged":
@@ -76,44 +74,24 @@ class Prefix_lists(ResourceModule):
# if state is deleted, empty out wantd and set haved to wantd
if self.state == "deleted":
- temp = None
- for k, v in iteritems(haved):
- if k in wantd:
- if wantd[k].get("prefix_lists"):
- want_afi_name = wantd[k].get("prefix_lists", {})
- haved[k]["prefix_lists"] = {
- key: val
- for key, val in iteritems(v.get("prefix_lists"))
- if key in want_afi_name
- }
- elif wantd:
- temp = k
- if temp:
- haved.pop(k)
- wantd = {}
- for k, have in iteritems(haved):
- for key, val in iteritems(have["prefix_lists"]):
- if k == "ipv4":
- k = "ip"
- self.commands.append("no {0} prefix-list {1}".format(k, key))
+ haved = {k: v for k, v in iteritems(haved) if k in wantd or not wantd}
+ for key, hvalue in iteritems(haved):
+ wvalue = wantd.pop(key, {})
+ if wvalue:
+ wplists = wvalue.get("prefix_lists", {})
+ hplists = hvalue.get("prefix_lists", {})
+ hvalue["prefix_lists"] = {
+ k: v for k, v in iteritems(hplists) if k in wplists or not wplists
+ }
# remove superfluous config for overridden and deleted
if self.state in ["overridden", "deleted"]:
for k, have in iteritems(haved):
- want_afi = wantd.get(k, {})
- for key, val in iteritems(have["prefix_lists"]):
- if k == "ipv4":
- k = "ip"
- if want_afi and key not in want_afi.get("prefix_lists"):
- self.commands.append("no {0} prefix-list {1}".format(k, key))
+ if k not in wantd:
+ self._compare(want={}, have=have)
for k, want in iteritems(wantd):
self._compare(want=want, have=haved.pop(k, {}))
- # alligning cmd with negate cmd 1st followed by config cmd
- if self.state in ["overridden", "replaced"]:
- self.commands = [each for each in self.commands if "no" in each] + [
- each for each in self.commands if "no" not in each
- ]
def _compare(self, want, have):
"""Leverages the base class `compare()` method and
@@ -121,130 +99,48 @@ class Prefix_lists(ResourceModule):
the `want` and `have` data with the `parsers` defined
for the Prefix_lists network resource.
"""
- if want != have and self.state != "deleted":
- for k, v in iteritems(want["prefix_lists"]):
- if have.get("prefix_lists") and have["prefix_lists"].get(k):
- have_prefix = have["prefix_lists"].pop(k, {})
- for key, val in iteritems(v.get("entries")):
- if have_prefix.get("entries"):
- have_prefix_param = have_prefix["entries"].pop(key, {})
- else:
- have_prefix_param = None
- if have_prefix.get("description"):
- self.compare(
- parsers=self.parsers,
- want={
- "afi": want["afi"],
- "name": k,
- "prefix_list": {"description": v["description"]},
- },
- have={
- "afi": want["afi"],
- "name": k,
- "prefix_list": {"description": have_prefix.pop("description")},
- },
- )
- if have_prefix_param and val != have_prefix_param:
- if key == "description":
- # Code snippet should be removed when Description param is removed from
- # entries level as this supports deprecated level of Description
- self.compare(
- parsers=self.parsers,
- want={"afi": want["afi"], "name": k, "prefix_list": {key: val}},
- have={
- "afi": have["afi"],
- "name": k,
- "prefix_list": {key: have_prefix_param},
- },
- )
- else:
- if self.state == "merged" and have_prefix_param.get(
- "sequence",
- ) == val.get("sequence"):
- self._module.fail_json(
- "Cannot update existing sequence {0} of Prefix Lists {1} with state merged.".format(
- val.get("sequence"),
- k,
- )
- + " Please use state replaced or overridden.",
- )
- self.compare(
- parsers=self.parsers,
- want=dict(),
- have={
- "afi": have["afi"],
- "name": k,
- "prefix_list": have_prefix_param,
- },
- )
- self.compare(
- parsers=self.parsers,
- want={"afi": want["afi"], "name": k, "prefix_list": val},
- have={
- "afi": have["afi"],
- "name": k,
- "prefix_list": have_prefix_param,
- },
- )
- elif val and val != have_prefix_param:
- self.compare(
- parsers=self.parsers,
- want={"afi": want["afi"], "name": k, "prefix_list": val},
- have=dict(),
- )
- if have_prefix and (self.state == "replaced" or self.state == "overridden"):
- if have_prefix.get("description"):
- # Code snippet should be removed when Description param is removed from
- # entries level as this supports deprecated level of Description
- self.compare(
- parsers=self.parsers,
- want=dict(),
- have={
- "afi": want["afi"],
- "name": k,
- "prefix_list": {"description": have_prefix["description"]},
- },
- )
- for key, val in iteritems(have_prefix.get("entries")):
- self.compare(
- parsers=self.parsers,
- want=dict(),
- have={"afi": have["afi"], "name": k, "prefix_list": val},
- )
- elif v:
- if v.get("description"):
- self.compare(
- parsers=self.parsers,
- want={
- "afi": want["afi"],
- "name": k,
- "prefix_list": {"description": v["description"]},
- },
- have=dict(),
- )
- for key, val in iteritems(v.get("entries")):
- self.compare(
- parsers=self.parsers,
- want={"afi": want["afi"], "name": k, "prefix_list": val},
- have=dict(),
- )
+ wplists = want.get("prefix_lists", {})
+ hplists = have.get("prefix_lists", {})
+ for wk, wentry in iteritems(wplists):
+ hentry = hplists.pop(wk, {})
+ self.compare(["description"], want=wentry, have=hentry)
+ # compare sequences
+ self._compare_seqs(wentry.pop("entries", {}), hentry.pop("entries", {}))
- def list_to_dict(self, param):
- if param:
- for key, val in iteritems(param):
- if val.get("prefix_lists"):
- temp_prefix_list = {}
- for each in val["prefix_lists"]:
- temp_entries = dict()
- if each.get("entries"):
- for every in each["entries"]:
- temp_entries.update({str(every["sequence"]): every})
- temp_prefix_list.update(
- {
- each["name"]: {
- "description": each.get("description"),
- "entries": temp_entries,
- },
- },
+ if self.state in ["overridden", "deleted"]:
+ # remove remaining prefix lists
+ for h in hplists.values():
+ self.commands.append(
+ "no {0} prefix-list {1}".format(h["afi"].replace("ipv4", "ip"), h["name"]),
+ )
+
+ def _compare_seqs(self, want, have):
+ for wseq, wentry in iteritems(want):
+ hentry = have.pop(wseq, {})
+ if hentry != wentry:
+ if hentry:
+ if self.state == "merged":
+ self._module.fail_json(
+ msg="Cannot update existing sequence {0} of prefix list {1} with state merged."
+ " Please use state replaced or overridden.".format(
+ hentry["sequence"],
+ hentry["name"],
+ ),
)
- val["prefix_lists"] = temp_prefix_list
+ else:
+ self.addcmd(hentry, "entry", negate=True)
+ self.addcmd(wentry, "entry")
+ # remove remaining entries from have prefix list
+ for hseq in have.values():
+ self.addcmd(hseq, "entry", negate=True)
+
+ def _prefix_list_transform(self, entry):
+ for afi, value in iteritems(entry):
+ if "prefix_lists" in value:
+ for plist in value["prefix_lists"]:
+ plist.update({"afi": afi})
+ if "entries" in plist:
+ for seq in plist["entries"]:
+ seq.update({"afi": afi, "name": plist["name"]})
+ plist["entries"] = {x["sequence"]: x for x in plist["entries"]}
+ value["prefix_lists"] = {entry["name"]: entry for entry in value["prefix_lists"]}
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/service/service.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/service/service.py
index 23e3329be..6a4c8a1ff 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/service/service.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/service/service.py
@@ -103,9 +103,11 @@ class Service(ResourceModule):
"prompt": True,
"slave_log": True,
"password_recovery": True,
- "private_config_encryption": True,
}
+ if "private_config_encryption" in haved:
+ service_default["private_config_encryption"] = True
+
# if state is merged, merge want onto have and then compare
if self.state == "merged":
wantd = dict_merge(haved, wantd)
@@ -115,7 +117,7 @@ class Service(ResourceModule):
wantd = self._service_list_to_dict(service_default)
# if state is replaced
- elif self.state == "replaced":
+ elif self.state in ["replaced", "overridden"]:
wantd = dict_merge(self._service_list_to_dict(service_default), wantd)
self._compare(want=wantd, have=haved)
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/snmp_server/snmp_server.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/snmp_server/snmp_server.py
index ff45f7b5f..187d0779d 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/snmp_server/snmp_server.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/snmp_server/snmp_server.py
@@ -77,72 +77,121 @@ class Snmp_server(ResourceModule):
"views",
]
self.complex_parsers = [
+ "traps.aaa_server",
"traps.auth_framework",
"traps.bfd",
"traps.bgp",
+ "traps.bgp.cbgp2",
"traps.bridge",
+ "traps.bulkstat",
+ "traps.call_home",
"traps.casa",
+ "traps.cef",
"traps.cnpd",
"traps.config",
"traps.config_copy",
"traps.config_ctid",
+ "traps.cpu",
"traps.dhcp",
+ "traps.dlsw",
"traps.eigrp",
- "traps.entity",
"traps.energywise",
+ "traps.entity",
+ "traps.entity_diag",
+ "traps.entity_perf",
+ "traps.entity_state",
+ "traps.envmon",
+ "traps.errdisable",
+ "traps.ether_oam",
+ "traps.ethernet.cfm.alarm",
+ "traps.ethernet.cfm.cc",
+ "traps.ethernet.cfm.crosscheck",
+ "traps.ethernet.evc",
"traps.event_manager",
+ "traps.flash",
+ "traps.flex_links",
+ "traps.firewall",
"traps.flowmon",
+ "traps.frame_relay",
+ "traps.frame_relay.subif",
"traps.fru_ctrl",
"traps.hsrp",
- "traps.ipsla",
- "traps.isis",
- "traps.msdp",
- "traps.mvpn",
- "traps.mpls_vpn",
- "traps.pki",
- "traps.pw_vc",
- "traps.rsvp",
- "traps.syslog",
- "traps.transceiver_all",
- "traps.tty",
- "traps.vrrp",
- "traps.vrfmib",
- "traps.ipmulticast",
"traps.ike.policy.add",
"traps.ike.policy.delete",
"traps.ike.tunnel.start",
"traps.ike.tunnel.stop",
+ "traps.ipmulticast",
"traps.ipsec.cryptomap.add",
- "traps.ipsec.cryptomap.delete",
"traps.ipsec.cryptomap.attach",
+ "traps.ipsec.cryptomap.delete",
"traps.ipsec.cryptomap.detach",
+ "traps.ipsec.too_many_sas",
"traps.ipsec.tunnel.start",
"traps.ipsec.tunnel.stop",
- "traps.ipsec.too_many_sas",
+ "traps.ipsla",
+ "traps.isis",
+ "traps.l2tc",
+ "traps.l2tun.pseudowire_status",
+ "traps.l2tun.session",
+ "traps.lisp",
+ "traps.license",
+ "traps.local_auth",
+ "traps.mac_notification",
+ "traps.memory",
+ "traps.mpls.fast_reroute",
+ "traps.mpls.ldp",
+ "traps.mpls.rfc.ldp",
+ "traps.mpls.rfc.traffic_eng",
+ "traps.mpls.rfc.vpn",
+ "traps.mpls.traffic_eng",
+ "traps.mpls.vpn",
+ "traps.msdp",
+ "traps.mvpn",
+ "traps.nhrp.nhc",
+ "traps.nhrp.nhp",
+ "traps.nhrp.nhs",
+ "traps.nhrp.quota_exceeded",
"traps.ospf.cisco_specific.error",
- "traps.ospf.cisco_specific.retransmit",
"traps.ospf.cisco_specific.lsa",
+ "traps.ospf.cisco_specific.retransmit",
"traps.ospf.cisco_specific.state_change.nssa_trans_change",
"traps.ospf.cisco_specific.state_change.shamlink.interface",
"traps.ospf.cisco_specific.state_change.shamlink.neighbor",
"traps.ospf.error",
- "traps.ospf.retransmit",
"traps.ospf.lsa",
+ "traps.ospf.retransmit",
"traps.ospf.state_change",
- "traps.l2tun.pseudowire_status",
- "traps.l2tun.session",
- "traps.cpu",
- "traps.firewall",
+ "traps.ospfv3.errors",
+ "traps.ospfv3.rate_limit",
+ "traps.ospfv3.state_change",
"traps.pim",
+ "traps.pki",
+ "traps.port_security",
+ "traps.power_ethernet",
+ "traps.pw_vc",
+ "traps.rep",
+ "traps.rsvp",
+ "traps.rf",
+ "traps.smart_license",
"traps.snmp",
- "traps.frame_relay",
- "traps.frame_relay.subif",
- "traps.cef",
- "traps.dlsw",
- "traps.ethernet.evc",
- "traps.ethernet.cfm.alarm",
- "traps.ethernet.cfm.cc",
- "traps.ethernet.cfm.crosscheck",
+ "traps.stackwise",
+ "traps.stpx",
+ "traps.syslog",
+ "traps.transceiver_all",
+ "traps.trustsec",
+ "traps.trustsec_interface",
+ "traps.trustsec_policy",
+ "traps.trustsec_server",
+ "traps.trustsec_sxp",
+ "traps.tty",
+ "traps.udld",
+ "traps.vlan_membership",
+ "traps.vlancreate",
+ "traps.vlandelete",
+ "traps.vrfmib",
+ "traps.vrrp",
+ "traps.vswitch",
+ "traps.vtp",
]
def execute_module(self):
@@ -163,6 +212,8 @@ class Snmp_server(ResourceModule):
wantd = self._snmp_list_to_dict(self.want)
haved = self._snmp_list_to_dict(self.have)
+ wantd = self._handle_deprecates(want=wantd)
+
# if state is merged, merge want onto have and then compare
if self.state == "merged":
wantd = dict_merge(haved, wantd)
@@ -186,16 +237,39 @@ class Snmp_server(ResourceModule):
def _compare_lists_attrs(self, want, have):
"""Compare list of dict"""
for _parser in self.list_parsers:
- i_want = want.get(_parser, {})
- i_have = have.get(_parser, {})
- for key, wanting in iteritems(i_want):
- haveing = i_have.pop(key, {})
- if wanting != haveing:
- if haveing and self.state in ["overridden", "replaced"]:
- self.addcmd(haveing, _parser, negate=True)
- self.addcmd(wanting, _parser)
- for key, haveing in iteritems(i_have):
- self.addcmd(haveing, _parser, negate=True)
+ if _parser == "users":
+ i_want = want.get(_parser, {})
+ i_have = have.get(_parser, {})
+ for key, wanting in iteritems(i_want):
+ wanting_compare = deepcopy(wanting)
+ if (
+ "authentication" in wanting_compare
+ and "password" in wanting_compare["authentication"]
+ ):
+ wanting_compare["authentication"].pop("password")
+ if (
+ "encryption" in wanting_compare
+ and "password" in wanting_compare["encryption"]
+ ):
+ wanting_compare["encryption"].pop("password")
+ haveing = i_have.pop(key, {})
+ if wanting_compare != haveing:
+ if haveing and self.state in ["overridden", "replaced"]:
+ self.addcmd(haveing, _parser, negate=True)
+ self.addcmd(wanting, _parser)
+ for key, haveing in iteritems(i_have):
+ self.addcmd(haveing, _parser, negate=True)
+ else:
+ i_want = want.get(_parser, {})
+ i_have = have.get(_parser, {})
+ for key, wanting in iteritems(i_want):
+ haveing = i_have.pop(key, {})
+ if wanting != haveing:
+ if haveing and self.state in ["overridden", "replaced"]:
+ self.addcmd(haveing, _parser, negate=True)
+ self.addcmd(wanting, _parser)
+ for key, haveing in iteritems(i_have):
+ self.addcmd(haveing, _parser, negate=True)
def _snmp_list_to_dict(self, data):
"""Convert all list of dicts to dicts of dicts"""
@@ -242,7 +316,8 @@ class Snmp_server(ResourceModule):
tmp_data[k]["protocol"] = tmp
elif k == "groups":
tmp_data[k] = {
- str(i[p_key.get(k)] + i.get("version_option", "")): i for i in tmp_data[k]
+ str(i[p_key.get(k)] + i.get("version_option", "") + i.get("context", "")): i
+ for i in tmp_data[k]
}
elif k == "views":
tmp_data[k] = {
@@ -251,3 +326,23 @@ class Snmp_server(ResourceModule):
else:
tmp_data[k] = {str(i[p_key.get(k)]): i for i in tmp_data[k]}
return tmp_data
+
+ def _handle_deprecates(self, want):
+ """Remove deprecated attributes and set the replacment"""
+
+ # Take in count the traps config mpls_vpn which is DEPRECATED and replaced by mpls.vpn
+ if "traps" in want:
+ if "mpls_vpn" in want["traps"]:
+ want["traps"] = dict_merge(
+ want["traps"],
+ {"mpls": {"vpn": {"enable": want["traps"]["mpls_vpn"]}}},
+ )
+ want["traps"].pop("mpls_vpn")
+ if "envmon" in want["traps"] and "fan" in want["traps"]["envmon"]:
+ want["traps"]["envmon"]["fan_enable"] = want["traps"]["envmon"]["fan"].get(
+ "enable",
+ False,
+ )
+ want["traps"]["envmon"].pop("fan")
+
+ return want
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/static_routes.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/static_routes.py
index 79b63c8fe..e6c1336d6 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/static_routes.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/static_routes.py
@@ -71,7 +71,7 @@ class Static_routes(ResourceModule):
if delete_spcl and haved and self.state == "deleted":
for pk, to_rem in delete_spcl.items():
if pk in ["ipv4", "ipv6"]:
- _afis = haved.get("_afis_")
+ _afis = haved.get("(_afis_)")
for k, v in _afis.get(pk, {}).items():
for each_dest in to_rem:
if k.split("_")[0] == each_dest:
@@ -184,5 +184,5 @@ class Static_routes(ResourceModule):
_routes[_key] = dummy_sr
_srts[_afi] = _routes
- _static_rts[_vrf if _vrf else "_afis_"] = _srts
+ _static_rts[_vrf if _vrf else "(_afis_)"] = _srts
return _static_rts, _delete_spc
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py
index 9d206f509..ad95b680a 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py
@@ -20,7 +20,10 @@ __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.ansible.netcommon.plugins.module_utils.network.common.utils import (
+ remove_empties,
+ 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
@@ -44,6 +47,7 @@ class Vlans(ConfigBase):
:rtype: A dictionary
:returns: The current configuration as a dictionary
"""
+
facts, _warnings = Facts(self._module).get_facts(
self.gather_subset,
self.gather_network_resources,
@@ -63,7 +67,12 @@ class Vlans(ConfigBase):
result = {"changed": False}
commands = list()
warnings = list()
-
+ self.have_now = list()
+ self.configuration = self._module.params["configuration"]
+ if not self.configuration:
+ self.vlan_parent = "vlan {0}"
+ else:
+ self.vlan_parent = "vlan configuration {0}"
if self.state in self.ACTION_STATES:
existing_vlans_facts = self.get_vlans_facts()
else:
@@ -110,7 +119,10 @@ class Vlans(ConfigBase):
:returns: the commands necessary to migrate the current configuration
to the desired configuration
"""
- want = self._module.params["config"]
+ want = []
+ if self._module.params.get("config"):
+ for cfg in self._module.params["config"]:
+ want.append(remove_empties(cfg))
have = existing_vlans_facts
resp = self.set_state(want, have)
return to_list(resp)
@@ -173,6 +185,7 @@ class Vlans(ConfigBase):
commands = []
want_local = want
+ self.have_now = have.copy()
for each in have:
count = 0
for every in want_local:
@@ -264,7 +277,8 @@ class Vlans(ConfigBase):
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"))
+
+ vlan = self.vlan_parent.format(want.get("vlan_id"))
def negate_have_config(want_diff, have_diff, vlan, commands):
name = dict(have_diff).get("name")
@@ -294,8 +308,9 @@ class Vlans(ConfigBase):
self.remove_command_from_config_list(vlan, "private-vlan association", commands)
# Get the diff b/w want n have
- want_dict = dict_to_set(want)
- have_dict = dict_to_set(have)
+
+ want_dict = dict_to_set(want, sort_dictionary=True)
+ have_dict = dict_to_set(have, sort_dictionary=True)
diff = want_dict - have_dict
have_diff = have_dict - want_dict
@@ -303,69 +318,140 @@ class Vlans(ConfigBase):
if have_diff and (self.state == "replaced" or self.state == "overridden"):
negate_have_config(diff, have_diff, vlan, commands)
- 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")
- private_vlan = dict(diff).get("private_vlan")
-
- if name:
- self.add_command_to_config_list(vlan, "name {0}".format(name), commands)
- if state:
- self.add_command_to_config_list(vlan, "state {0}".format(state), commands)
- if mtu:
- self.add_command_to_config_list(vlan, "mtu {0}".format(mtu), commands)
- if remote_span:
- self.add_command_to_config_list(vlan, "remote-span", commands)
-
- if private_vlan:
- private_vlan_type = dict(private_vlan).get("type")
- private_vlan_associated = dict(private_vlan).get("associated")
- if private_vlan_type:
- self.add_command_to_config_list(
- vlan,
- "private-vlan {0}".format(private_vlan_type),
- commands,
+ if not self.configuration:
+ 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")
+ private_vlan = dict(diff).get("private_vlan")
+
+ if name:
+ self.add_command_to_config_list(vlan, "name {0}".format(name), commands)
+ if state:
+ self.add_command_to_config_list(vlan, "state {0}".format(state), commands)
+ if mtu:
+ self.add_command_to_config_list(vlan, "mtu {0}".format(mtu), commands)
+ if remote_span:
+ self.add_command_to_config_list(vlan, "remote-span", commands)
+
+ if private_vlan:
+ private_vlan_type = dict(private_vlan).get("type")
+ private_vlan_associated = dict(private_vlan).get("associated")
+ if private_vlan_type:
+ self.add_command_to_config_list(
+ vlan,
+ "private-vlan {0}".format(private_vlan_type),
+ commands,
+ )
+ if private_vlan_associated:
+ associated_list = ",".join(
+ str(e) for e in private_vlan_associated
+ ) # Convert python list to string with elements separated by a comma
+ self.add_command_to_config_list(
+ vlan,
+ "private-vlan association {0}".format(associated_list),
+ 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)
+ else:
+ member_dict = dict(diff).get("member")
+ if member_dict:
+ member_dict = dict(member_dict)
+ member_vni = member_dict.get("vni")
+ member_evi = member_dict.get("evi")
+ commands.extend(
+ self._remove_vlan_vni_evi_mapping(
+ want,
+ ),
)
- if private_vlan_associated:
- associated_list = ",".join(
- str(e) for e in private_vlan_associated
- ) # Convert python list to string with elements separated by a comma
- self.add_command_to_config_list(
- vlan,
- "private-vlan association {0}".format(associated_list),
- commands,
+ commands.extend(
+ [
+ vlan,
+ self._get_member_cmds(member_dict),
+ ],
)
- 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)
elif have_diff and (self.state == "replaced" or self.state == "overridden"):
negate_have_config(diff, have_diff, vlan, 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"))
+ vlan = self.vlan_parent.format(have.get("vlan_id"))
if (
have.get("vlan_id")
- and "default" not in have.get("name")
+ 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)
+ if self.configuration and self.state == "overridden":
+ self.have_now.remove(have)
+ elif "default" not in have.get("name", ""):
+ if not self.configuration:
+ 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
+ def _remove_vlan_vni_evi_mapping(self, want_dict):
+ commands = []
+ have_copy = self.have_now.copy()
+ vlan = want_dict["vlan_id"]
+ for vlan_dict in have_copy:
+ if vlan_dict["vlan_id"] == vlan:
+ if "member" in vlan_dict:
+ commands.extend(
+ [
+ self.vlan_parent.format(vlan),
+ self._get_member_cmds(
+ vlan_dict.get("member", {}),
+ prefix="no",
+ ),
+ ],
+ )
+ vlan_dict.pop("member")
+ if vlan_dict["vlan_id"] != vlan:
+ delete_member = False
+ have_vni = vlan_dict.get("member", {}).get("vni")
+ have_evi = vlan_dict.get("member", {}).get("evi")
+ if have_vni and (have_vni == want_dict["member"].get("vni")):
+ delete_member = True
+ if have_evi and (have_evi == want_dict["member"].get("evi")):
+ delete_member = True
+ if delete_member:
+ commands.extend(
+ [
+ self.vlan_parent.format(vlan_dict["vlan_id"]),
+ self._get_member_cmds(
+ vlan_dict.get("member", {}),
+ prefix="no",
+ ),
+ ],
+ )
+ self.have_now.remove(vlan_dict)
return commands
+
+ def _get_member_cmds(self, member_dict, prefix=""):
+ cmd = ""
+ if prefix:
+ prefix = prefix + " "
+ member_vni = member_dict.get("vni")
+ member_evi = member_dict.get("evi")
+
+ if member_evi:
+ cmd = prefix + "member evpn-instance {0} vni {1}".format(member_evi, member_vni)
+ elif member_vni:
+ cmd = prefix + "member vni {0}".format(member_vni)
+
+ return cmd
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vxlan_vtep/__init__.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vxlan_vtep/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vxlan_vtep/__init__.py
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vxlan_vtep/vxlan_vtep.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vxlan_vtep/vxlan_vtep.py
new file mode 100644
index 000000000..bb35b04e4
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vxlan_vtep/vxlan_vtep.py
@@ -0,0 +1,190 @@
+#
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+"""
+The ios_vxlan_vtep 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.rm_base.resource_module import (
+ ResourceModule,
+)
+from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import (
+ dict_merge,
+ param_list_to_dict,
+)
+
+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.vxlan_vtep import (
+ Vxlan_vtepTemplate,
+)
+
+
+class Vxlan_vtep(ResourceModule):
+ """
+ The ios_vxlan_vtep config class
+ """
+
+ def __init__(self, module):
+ super(Vxlan_vtep, self).__init__(
+ empty_fact_val={},
+ facts_module=Facts(module),
+ module=module,
+ resource="vxlan_vtep",
+ tmplt=Vxlan_vtepTemplate(),
+ )
+ self.parsers = [
+ "source_interface",
+ "host_reachability_bgp",
+ ]
+
+ 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 = self._interface_list_to_dict(self.want, self.have)
+
+ # if state is merged, merge want onto have and then compare
+ if self.state == "merged":
+ wantd = dict_merge(haved, wantd)
+
+ # if state is deleted, empty out wantd and set haved to wantd
+ if self.state == "deleted":
+ haved = {k: v for k, v in iteritems(haved) if k in wantd or not wantd}
+ wantd_copy = wantd.copy()
+ wantd = {}
+
+ # remove superfluous config for deleted
+ if self.state in ["overridden", "deleted"]:
+ for k, have in iteritems(haved):
+ if k not in wantd:
+ have = self._filtered_dict(wantd_copy.get(k), have)
+ 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 Vxlan_vtep network resource.
+ """
+
+ begin = len(self.commands)
+ self.compare(parsers=self.parsers, want=want, have=have)
+
+ self._compare_member_vnis(
+ want.pop("member", {}).get("vni", {}),
+ have.pop("member", {}).get("vni", {}),
+ )
+
+ if len(self.commands) != begin:
+ self.commands.insert(
+ begin,
+ self._tmplt.render(want or have, "interface", False),
+ )
+
+ def _compare_member_vnis(self, wantmv, havemv):
+ """Compare member VNIs dict"""
+
+ PARSER_DICT = {
+ "l2vni": "replication",
+ "l3vni": "vrf",
+ }
+
+ for vni_type in ["l2vni", "l3vni"]:
+ wantd = wantmv.get(vni_type, {})
+ haved = havemv.get(vni_type, {})
+ undel_vnis = haved.copy()
+
+ for wvni, want in wantd.items():
+ have = haved.pop(wvni, {})
+ if want != have:
+ # remove exiting config of the member VNI
+ self.addcmd(undel_vnis.pop(wvni, {}), PARSER_DICT[vni_type], True)
+ if vni_type == "l3vni":
+ undel_vnis = self._remove_existing_vnis_vrfs(want["vrf"], undel_vnis)
+ self.addcmd(want, PARSER_DICT[vni_type])
+
+ # remove remaining configs in have for replaced state
+ for hvni, have in haved.items():
+ if hvni in undel_vnis:
+ self.addcmd(have, PARSER_DICT[vni_type], True)
+
+ def _interface_list_to_dict(self, want, have):
+ """Convert all list of dicts to dicts of dicts"""
+
+ wantd = {entry["interface"]: entry for entry in want}
+ haved = {entry["interface"]: entry for entry in have}
+
+ for each in wantd, haved:
+ if each:
+ for nvi, nvid in each.items():
+ member_vni = nvid.get("member", {}).get("vni")
+ if member_vni:
+ for vni_type in member_vni:
+ member_vni[vni_type] = param_list_to_dict(
+ member_vni[vni_type],
+ unique_key="vni",
+ remove_key=False,
+ )
+
+ return wantd, haved
+
+ def _remove_existing_vnis_vrfs(self, want_vrf, haved):
+ """Remove member VNIs of corresponding VRF"""
+
+ vrf_haved = next(
+ (h for h in haved.values() if h["vrf"] == want_vrf),
+ None,
+ )
+ if vrf_haved:
+ self.addcmd(haved.pop(vrf_haved["vni"]), "vrf", True)
+ return haved
+
+ def _filtered_dict(self, want, have):
+ """Remove other config from 'have' if 'member' key is present"""
+
+ if "member" in want:
+ have_member = {}
+ want_vni_dict = want.get("member", {}).get("vni", {})
+ have_vni_dict = have.get("member", {}).get("vni", {})
+
+ for vni_type, have_vnis in have_vni_dict.items():
+ want_vnis = want_vni_dict.get(vni_type, {})
+ have_member[vni_type] = {
+ vni: have_vni_dict[vni_type].get(vni) for vni in have_vnis if vni in want_vnis
+ }
+ have = {
+ "interface": have["interface"],
+ "member": {"vni": have_member},
+ }
+
+ return have
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/acls.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/acls.py
index 6037d99e1..2be369a7a 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/acls.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/acls.py
@@ -17,6 +17,7 @@ __metaclass__ = type
import re
+from ansible.module_utils._text import to_text
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.rm_base.network_template import (
@@ -34,28 +35,49 @@ from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates
class AclsFacts(object):
"""The ios_acls fact class"""
- def __init__(self, module, subspec="config", options="options"):
+ def __init__(self, module):
self._module = module
self.argument_spec = AclsArgs.argument_spec
def get_acl_data(self, connection):
- # Get the access-lists from the ios router
- # Get the remarks on access-lists from the ios router
- # alternate command 'sh run partition access-list' but has a lot of ordering issues
- # and incomplete ACLs are not viewed correctly
- _acl_data = connection.get("show access-list")
- _remarks_data = connection.get("show running-config | include ip(v6)* access-list|remark")
- if _remarks_data:
- _acl_data += "\n" + _remarks_data
- return _acl_data
+ # Removed the show access-list
+ # Removed the show running-config | include ip(v6)* access-list|remark
+ return connection.get("show running-config | section access-list")
+
+ def get_acl_names(self, connection):
+ # this information is required to scoop out the access lists which has no aces
+ return connection.get("show access-lists | include access list")
+
+ def populate_empty_acls(self, raw_acls, raw_acls_name):
+ # this would update empty acls to the full acls entry
+ if raw_acls and raw_acls_name:
+ for aclnames, acldata in raw_acls_name.get("acls").items():
+ if aclnames not in raw_acls.get("acls").keys():
+ if not raw_acls.get("acls"):
+ raw_acls["acls"] = {}
+ raw_acls["acls"][aclnames] = acldata
+ elif raw_acls_name and not raw_acls:
+ for aclnames, acldata in raw_acls_name.get("acls").items():
+ if not raw_acls.get("acls"):
+ raw_acls["acls"] = {}
+ raw_acls["acls"][aclnames] = acldata
+ return raw_acls
def sanitize_data(self, data):
"""removes matches or extra config info that is added on acl match"""
re_data = ""
+ remarks_idx = 0
for da in data.split("\n"):
if "match" in da:
mod_da = re.sub(r"\([^()]*\)", "", da)
re_data += mod_da[:-1] + "\n"
+ elif re.match(r"\s*\d+\sremark.+", da, re.IGNORECASE) or re.match(
+ r"\s*remark.+",
+ da,
+ re.IGNORECASE,
+ ):
+ remarks_idx += 1
+ re_data += to_text(remarks_idx) + " " + da + "\n"
else:
re_data += da + "\n"
return re_data
@@ -68,21 +90,30 @@ class AclsFacts(object):
:rtype: dictionary
:returns: facts
"""
+ namedata = ""
if not data:
data = self.get_acl_data(connection)
+ namedata = self.get_acl_names(connection)
if data:
data = self.sanitize_data(data)
- rmmod = NetworkTemplate(lines=data.splitlines(), tmplt=AclsTemplate())
- current = rmmod.parse()
+ # parse main information
+ templateObjMain = NetworkTemplate(lines=data.splitlines(), tmplt=AclsTemplate())
+ raw_acls = templateObjMain.parse()
+
+ if namedata:
+ # parse just names to update empty acls
+ templateObjName = NetworkTemplate(lines=namedata.splitlines(), tmplt=AclsTemplate())
+ raw_acl_names = templateObjName.parse()
+ raw_acls = self.populate_empty_acls(raw_acls, raw_acl_names)
temp_v4 = []
temp_v6 = []
- if current.get("acls"):
- for k, v in iteritems(current.get("acls")):
+ if raw_acls.get("acls"):
+ for k, v in iteritems(raw_acls.get("acls")):
if v.get("afi") == "ipv4" and v.get("acl_type") in ["standard", "extended"]:
del v["afi"]
temp_v4.append(v)
@@ -99,6 +130,14 @@ class AclsFacts(object):
_temp_addr = temp.get("address", "")
ace[typ]["address"] = _temp_addr.split(" ")[0]
ace[typ]["wildcard_bits"] = _temp_addr.split(" ")[1]
+ if temp.get("ipv6_address"):
+ _temp_addr = temp.get("ipv6_address", "")
+ if len(_temp_addr.split(" ")) == 2:
+ ipv6_add = ace[typ].pop("ipv6_address")
+ ace[typ]["address"] = ipv6_add.split(" ")[0]
+ ace[typ]["wildcard_bits"] = ipv6_add.split(" ")[1]
+ else:
+ ace[typ]["address"] = ace[typ].pop("ipv6_address")
def process_protocol_options(each):
for each_ace in each.get("aces"):
@@ -131,14 +170,25 @@ class AclsFacts(object):
def collect_remarks(aces):
"""makes remarks list per ace"""
ace_entry = []
- rem = []
+ ace_rem = []
+ rem = {}
for i in aces:
- if i.get("remarks"):
- rem.append(i.pop("remarks"))
+ if i.get("is_remark_for"):
+ if not rem.get(i.get("is_remark_for")):
+ rem[i.get("is_remark_for")] = {"remarks": []}
+ rem[i.get("is_remark_for")]["remarks"].append(i.get("the_remark"))
+ else:
+ rem[i.get("is_remark_for")]["remarks"].append(i.get("the_remark"))
else:
+ if rem:
+ if rem.get(i.get("sequence")):
+ ace_rem = rem.pop(i.get("sequence"))
+ i["remarks"] = ace_rem.get("remarks")
ace_entry.append(i)
- if rem:
- ace_entry.append({"remarks": rem})
+
+ if rem: # pending remarks
+ pending_rem = rem.get("remark")
+ ace_entry.append({"remarks": pending_rem.get("remarks")})
return ace_entry
for each in temp_v4:
@@ -148,7 +198,7 @@ class AclsFacts(object):
for each in temp_v6:
if each.get("aces"):
- each["aces"] = collect_remarks(each.get("aces"))
+ # each["aces"] = collect_remarks(each.get("aces"))
process_protocol_options(each)
objs = []
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py
index 68ff93636..37bbfabfd 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py
@@ -51,7 +51,10 @@ class Bgp_globalFacts(object):
data = self.get_bgp_global_data(connection)
# parse native config using the Bgp_global template
- bgp_global_parser = Bgp_globalTemplate(lines=data.splitlines(), module=self._module)
+ bgp_global_parser = Bgp_globalTemplate(
+ lines=data.splitlines(),
+ module=self._module,
+ )
objs = bgp_global_parser.parse()
neighbor_list = objs.get("neighbors", {})
if neighbor_list:
@@ -64,7 +67,11 @@ class Bgp_globalFacts(object):
ansible_facts["ansible_network_resources"].pop("bgp_global", None)
params = utils.remove_empties(
- bgp_global_parser.validate_config(self.argument_spec, {"config": obj}, redact=True),
+ bgp_global_parser.validate_config(
+ self.argument_spec,
+ {"config": obj},
+ redact=True,
+ ),
)
facts["bgp_global"] = params.get("config", {})
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_evi/__init__.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_evi/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_evi/__init__.py
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_evi/evpn_evi.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_evi/evpn_evi.py
new file mode 100644
index 000000000..be6cfb3bf
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_evi/evpn_evi.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+"""
+The ios evpn_evi fact class
+It is in this file the configuration is collected from the device
+for a given resource, parsed, and the facts tree is populated
+based on the configuration.
+"""
+
+from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import utils
+
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.evpn_evi.evpn_evi import (
+ Evpn_eviArgs,
+)
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.evpn_evi import (
+ Evpn_eviTemplate,
+)
+
+
+class Evpn_eviFacts(object):
+ """The ios evpn_evi facts class"""
+
+ def __init__(self, module, subspec="config", options="options"):
+ self._module = module
+ self.argument_spec = Evpn_eviArgs.argument_spec
+
+ def get_evpn_evi_data(self, connection):
+ return connection.get("show running-config | section ^l2vpn evpn instance .+$")
+
+ def populate_facts(self, connection, ansible_facts, data=None):
+ """Populate the facts for Evpn_evi 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_evpn_evi_data(connection)
+
+ # parse native config using the Evpn_evi template
+ evpn_evi_parser = Evpn_eviTemplate(lines=data.splitlines(), module=self._module)
+ objs = list(evpn_evi_parser.parse().values())
+
+ ansible_facts["ansible_network_resources"].pop("evpn_evi", None)
+
+ params = utils.remove_empties(
+ evpn_evi_parser.validate_config(self.argument_spec, {"config": objs}, redact=True),
+ )
+
+ facts["evpn_evi"] = params.get("config", [])
+ ansible_facts["ansible_network_resources"].update(facts)
+
+ return ansible_facts
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_global/__init__.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_global/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_global/__init__.py
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_global/evpn_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_global/evpn_global.py
new file mode 100644
index 000000000..68ecfc711
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/evpn_global/evpn_global.py
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+"""
+The ios evpn_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 ansible_collections.ansible.netcommon.plugins.module_utils.network.common import utils
+
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.evpn_global.evpn_global import (
+ Evpn_globalArgs,
+)
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.evpn_global import (
+ Evpn_globalTemplate,
+)
+
+
+class Evpn_globalFacts(object):
+ """The ios evpn_global facts class"""
+
+ def __init__(self, module):
+ self._module = module
+ self.argument_spec = Evpn_globalArgs.argument_spec
+
+ def get_evpn_global_data(self, connection):
+ return connection.get("show running-config | section ^l2vpn evpn$")
+
+ def populate_facts(self, connection, ansible_facts, data=None):
+ """Populate the facts for Evpn_global 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_evpn_global_data(connection)
+
+ # parse native config using the Evpn_global template
+ evpn_global_parser = Evpn_globalTemplate(lines=data.splitlines(), module=self._module)
+ objs = evpn_global_parser.parse()
+ obj = utils.remove_empties(objs)
+
+ ansible_facts["ansible_network_resources"].pop("evpn_global", None)
+
+ params = utils.remove_empties(
+ evpn_global_parser.validate_config(self.argument_spec, {"config": obj}, redact=True),
+ )
+
+ facts["evpn_global"] = params.get("config", {})
+ ansible_facts["ansible_network_resources"].update(facts)
+
+ return ansible_facts
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py
index 6a28043bf..7718b474d 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py
@@ -29,6 +29,12 @@ from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.bgp_ad
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.evpn_evi.evpn_evi import (
+ Evpn_eviFacts,
+)
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.evpn_global.evpn_global import (
+ Evpn_globalFacts,
+)
from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.hostname.hostname import (
HostnameFacts,
)
@@ -93,6 +99,9 @@ from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.static
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.vxlan_vtep.vxlan_vtep import (
+ Vxlan_vtepFacts,
+)
FACT_LEGACY_SUBSETS = dict(default=Default, hardware=Hardware, interfaces=Interfaces, config=Config)
@@ -122,6 +131,9 @@ FACT_RESOURCE_SUBSETS = dict(
service=ServiceFacts,
snmp_server=Snmp_serverFacts,
hostname=HostnameFacts,
+ vxlan_vtep=Vxlan_vtepFacts,
+ evpn_global=Evpn_globalFacts,
+ evpn_evi=Evpn_eviFacts,
)
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/base.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/base.py
index de92f1ed5..5344ca627 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/base.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/base.py
@@ -125,26 +125,31 @@ class Default(FactsBase):
class Hardware(FactsBase):
- COMMANDS = ["dir", "show memory statistics"]
+ COMMANDS = ["dir", "show memory statistics", "show processes cpu | include CPU utilization"]
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)
+ self.facts["cpu_utilization"] = self.parse_cpu_utilization(self.responses[2])
data = self.responses[1]
if data:
if "Invalid input detected" in data:
warnings.append("Unable to gather memory statistics")
else:
- processor_line = [line for line in data.splitlines() if "Processor" in line].pop()
- match = re.findall(r"\s(\d+)\s", processor_line)
- if match:
- self.facts["memtotal_mb"] = int(match[0]) / 1048576
- self.facts["memfree_mb"] = int(match[2]) / 1048576
+ for line in data.splitlines():
+ match = re.match(
+ r"Processor\s+(\S+|\d+)\s+(?P<total>\d+)\s+\d+\s+(?P<free>\d+)",
+ line,
+ )
+ if match:
+ self.facts["memtotal_mb"] = int(match.group("total")) / 1048576
+ self.facts["memfree_mb"] = int(match.group("free")) / 1048576
def parse_filesystems(self, data):
return re.findall(r"^Directory of (\S+)/", data, re.M)
@@ -164,6 +169,37 @@ class Hardware(FactsBase):
facts[fs]["spacefree_kb"] = int(match.group(2)) / 1024
return facts
+ def parse_cpu_utilization(self, data):
+ facts = {}
+ regex_cpu_utilization = re.compile(
+ r"""
+ (^Core\s(?P<core>\d+)?:)?
+ (^|\s)CPU\sutilization\sfor\sfive\sseconds:
+ (\s(?P<f_sec>\d+)?%)?
+ (\s(?P<f_se_nom>\d+)%/(?P<f_s_denom>\d+)%\)?)?
+ ;\sone\sminute:\s(?P<a_min>\d+)?%
+ ;\sfive\sminutes:\s(?P<f_min>\d+)?%
+ """,
+ re.VERBOSE,
+ )
+ for line in data.split("\n"):
+ match_cpu_utilization = regex_cpu_utilization.match(line)
+ if match_cpu_utilization:
+ _core = "core"
+ if match_cpu_utilization.group("core"):
+ _core = "core_" + str(match_cpu_utilization.group("core"))
+ facts[_core] = {}
+ facts[_core]["five_seconds"] = int(
+ match_cpu_utilization.group("f_se_nom") or match_cpu_utilization.group("f_sec"),
+ )
+ facts[_core]["one_minute"] = int(match_cpu_utilization.group("a_min"))
+ facts[_core]["five_minutes"] = int(match_cpu_utilization.group("f_min"))
+ if match_cpu_utilization.group("f_s_denom"):
+ facts[_core]["five_seconds_interrupt"] = int(
+ match_cpu_utilization.group("f_s_denom"),
+ )
+ return facts
+
class Config(FactsBase):
COMMANDS = ["show running-config"]
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/logging_global/logging_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/logging_global/logging_global.py
index 639d43dba..5e955217c 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/logging_global/logging_global.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/logging_global/logging_global.py
@@ -58,17 +58,17 @@ class Logging_globalFacts(object):
if objFinal:
for k, v in iteritems(objFinal):
- if type(v) == list and k not in ["hosts", "source_interface", "filter"]:
+ if isinstance(v, list) and k not in ["hosts", "source_interface", "filter"]:
v.sort()
objFinal[k] = v
- elif type(v) == list and k == "hosts":
+ elif isinstance(v, list) and k == "hosts":
objFinal[k] = sorted(
objFinal[k],
key=lambda item: item["host"] if item.get("host") else item.get("ipv6"),
)
- elif type(v) == list and k == "source_interface":
+ elif isinstance(v, list) and k == "source_interface":
objFinal[k] = sorted(objFinal[k], key=lambda item: item["interface"])
- elif type(v) == list and k == "filter":
+ elif isinstance(v, list) and k == "filter":
objFinal[k] = sorted(objFinal[k], key=lambda item: item["url"])
ansible_facts["ansible_network_resources"].pop("logging_global", None)
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py
index 48a77de99..66fc35d2c 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py
@@ -37,6 +37,27 @@ class Ospfv2Facts(object):
def get_ospfv2_data(self, connection):
return connection.get("show running-config | section ^router ospf")
+ def dict_to_list(self, ospf_data):
+ """Converts areas, interfaces in each process to list
+ :param ospf_data: ospf data
+ :rtype: dictionary
+ :returns: facts_output
+ """
+
+ facts_output = {"processes": []}
+
+ for process in ospf_data.get("processes", []):
+ if "passive_interfaces" in process and process["passive_interfaces"].get("default"):
+ if process.get("passive_interfaces", {}).get("interface"):
+ process["passive_interfaces"]["interface"]["name"] = [
+ each for each in process["passive_interfaces"]["interface"]["name"] if each
+ ]
+ if "areas" in process:
+ process["areas"] = list(process["areas"].values())
+ facts_output["processes"].append(process)
+
+ return facts_output
+
def populate_facts(self, connection, ansible_facts, data=None):
"""Populate the facts for ospfv2
:param connection: the device connection
@@ -45,42 +66,28 @@ class Ospfv2Facts(object):
:rtype: dictionary
:returns: facts
"""
+
+ facts = {}
+
if not data:
data = self.get_ospfv2_data(connection)
- ipv4 = {"processes": []}
- rmmod = NetworkTemplate(lines=data.splitlines(), tmplt=Ospfv2Template())
- current = rmmod.parse()
+ ospf_temp_obj = NetworkTemplate(lines=data.splitlines(), tmplt=Ospfv2Template())
+ ospf_parsed = ospf_temp_obj.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])
+ # Convert dict to list
+ ospf_parsed["processes"] = (
+ ospf_parsed["processes"].values() if "processes" in ospf_parsed else []
+ )
- for process in current.get("processes", []):
- if "passive_interfaces" in process and process["passive_interfaces"].get("default"):
- if process["passive_interfaces"].get("interface"):
- temp = []
- for each in process["passive_interfaces"]["interface"]["name"]:
- if each:
- temp.append(each)
- process["passive_interfaces"]["interface"]["name"] = temp
- 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)
+ # converts areas, interfaces in each process to list
+ facts_output = self.dict_to_list(ospf_parsed)
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)
+ if ospf_parsed["processes"]:
+ params = utils.validate_config(self.argument_spec, {"config": facts_output})
+ params = utils.remove_empties(params)
facts["ospfv2"] = params["config"]
-
ansible_facts["ansible_network_resources"].update(facts)
return ansible_facts
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/prefix_lists/prefix_lists.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/prefix_lists/prefix_lists.py
index 167f68c73..80a73e18c 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/prefix_lists/prefix_lists.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/prefix_lists/prefix_lists.py
@@ -15,9 +15,6 @@ for a given resource, parsed, and the facts tree is populated
based on the configuration.
"""
-from copy import copy
-
-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.prefix_lists.prefix_lists import (
@@ -59,50 +56,18 @@ class Prefix_listsFacts(object):
objs = prefix_lists_parser.parse()
final_objs = []
- temp = {}
- temp["afi"] = None
- temp["prefix_lists"] = []
+
+ _prefix_list = {"ipv4": [], "ipv6": []}
if objs:
- for k, v in iteritems(objs):
- temp_prefix_list = {}
- temp_prefix_list["entries"] = []
- if not temp["afi"] or v["afi"] != temp["afi"]:
- if temp and temp["afi"]:
- temp["prefix_lists"] = sorted(
- temp["prefix_lists"],
- key=lambda k, sk="name": str(k[sk]),
- )
- # additional check for py3.5
- if len(final_objs) == 2:
- for each in final_objs:
- if v["afi"] == each["afi"]:
- each["prefix_lists"].extend(temp["prefix_lists"])
- else:
- final_objs.append(copy(temp))
- temp["prefix_lists"] = []
- temp["afi"] = v["afi"]
- for each in v["prefix_lists"]:
- if not temp_prefix_list.get("name"):
- temp_prefix_list["name"] = each["name"]
- if not temp_prefix_list.get("description") and each.get("description"):
- temp_prefix_list["description"] = each["description"]
- if each["entries"] and not each["entries"].get("description"):
- temp_prefix_list["entries"].append(each["entries"])
- temp["prefix_lists"].append(temp_prefix_list)
- if temp and temp["afi"]:
- temp["prefix_lists"] = sorted(
- temp["prefix_lists"],
- key=lambda k, sk="name": str(k[sk]),
+ for prefixes in list(objs.values()):
+ _afi = prefixes.pop("afi")
+ _prefix_list[_afi].append(
+ prefixes,
)
- # additional check for py3.5
- if len(final_objs) == 2:
- for each in final_objs:
- if v["afi"] == each["afi"]:
- each["prefix_lists"].extend(temp["prefix_lists"])
- else:
- final_objs.append(copy(temp))
-
- final_objs = sorted(final_objs, key=lambda k, sk="afi": k[sk])
+ if _prefix_list.get("ipv4"):
+ final_objs.append({"afi": "ipv4", "prefix_lists": _prefix_list.pop("ipv4")})
+ if _prefix_list.get("ipv6"):
+ final_objs.append({"afi": "ipv6", "prefix_lists": _prefix_list.pop("ipv6")})
ansible_facts["ansible_network_resources"].pop("prefix_lists", None)
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/snmp_server/snmp_server.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/snmp_server/snmp_server.py
index 2fc1042e7..a153ac0a8 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/snmp_server/snmp_server.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/snmp_server/snmp_server.py
@@ -15,6 +15,8 @@ for a given resource, parsed, and the facts tree is populated
based on the configuration.
"""
+import re
+
from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import utils
from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.snmp_server.snmp_server import (
@@ -33,7 +35,7 @@ class Snmp_serverFacts(object):
self.argument_spec = Snmp_serverArgs.argument_spec
def get_snmp_data(self, connection):
- _get_snmp_data = connection.get("show running-config | section ^snmp-server")
+ _get_snmp_data = connection.get("show running-config | section ^snmp")
return _get_snmp_data
def get_snmpv3_user_data(self, connection):
@@ -46,7 +48,12 @@ class Snmp_serverFacts(object):
Note: The seperate method is needed because the snmpv3 user data is not returned within the snmp-server config
"""
- _get_snmpv3_user = connection.get("show snmp user")
+ try:
+ _get_snmpv3_user = connection.get("show snmp user")
+ except Exception as e:
+ if "agent not enabled" in str(e):
+ return ""
+ raise Exception("Unable to get snmp user data: %s" % str(e))
return _get_snmpv3_user
def sort_list_dicts(self, objs):
@@ -87,18 +94,36 @@ class Snmp_serverFacts(object):
"""
user_sets = snmpv3_user.split("User ")
user_list = []
+ re_snmp_auth = re.compile(r"^Authentication Protocol:\s*(MD5|SHA)")
+ re_snmp_priv = re.compile(r"^Privacy Protocol:\s*(3DES|AES|DES)([0-9]*)")
+ re_snmp_acl = re.compile(r"^.*active\s+(access-list: (\S+)|)\s*(IPv6 access-list: (\S+)|)")
for user_set in user_sets:
one_set = {}
lines = user_set.splitlines()
for line in lines:
if line.startswith("name"):
one_set["username"] = line.split(": ")[1]
+ continue
if line.startswith("Group-name:"):
one_set["group"] = line.split(": ")[1]
- if "IPv6 access-list:" in line:
- one_set["acl_v6"] = line.split(": ")[-1]
- if "active\taccess-list:" in line:
- one_set["acl_v4"] = line.split(": ")[-1]
+ continue
+ re_match = re_snmp_auth.search(line)
+ if re_match:
+ one_set["authentication"] = {"algorithm": re_match.group(1).lower()}
+ continue
+ re_match = re_snmp_priv.search(line)
+ if re_match:
+ one_set["encryption"] = {"priv": re_match.group(1).lower()}
+ if re_match.group(2):
+ one_set["encryption"]["priv_option"] = re_match.group(2)
+ continue
+ re_match = re_snmp_acl.search(line)
+ if re_match:
+ if re_match.group(2):
+ one_set["acl_v4"] = re_match.group(2)
+ if re_match.group(4):
+ one_set["acl_v6"] = re_match.group(4)
+ continue
one_set["version"] = "v3" # defaults to version 3 data
if len(one_set):
user_list.append(one_set)
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py
index 73f73a5a2..9b506fa90 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py
@@ -16,6 +16,8 @@ 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
@@ -42,14 +44,18 @@ class VlansFacts(object):
self.generated_spec = utils.generate_dict(facts_argument_spec)
- def get_vlans_data(self, connection):
+ def get_vlans_data(self, connection, configuration):
"""Checks device is L2/L3 and returns
facts gracefully. Does not fail module.
"""
+ if configuration:
+ cmd = "show running-config | sec ^vlan configuration .+"
+ else:
+ cmd = "show vlan"
check_os_type = connection.get_device_info()
if check_os_type.get("network_os_type") == "L3":
return ""
- return connection.get("show vlan")
+ return connection.get(cmd)
def populate_facts(self, connection, ansible_facts, data=None):
"""Populate the facts for vlans
@@ -59,14 +65,134 @@ class VlansFacts(object):
:rtype: dictionary
:returns: facts
"""
+ configuration = self._module.params["configuration"]
+ objs = []
+
+ if not data:
+ data = self.get_vlans_data(connection, configuration)
+ if not configuration:
+ objs = self.parse_vlan(data)
+ else:
+ objs = self.parse_vlan_config(data)
+
+ facts = {}
+ if 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]
+ state_idx = 2
+ for i in range(2, len(conf)): # check for index where state starts
+ if conf[i] in ["suspended", "active"]:
+ state_idx = i
+ break
+ elif conf[i].split("/")[0] in ["sus", "act"]:
+ state_idx = i
+ break
+ config["name"] += " " + conf[i]
+ try:
+ if len(conf[state_idx].split("/")) > 1:
+ _state = conf[state_idx].split("/")[0]
+ if _state == "sus":
+ config["state"] = "suspend"
+ elif _state == "act":
+ config["state"] = "active"
+ config["shutdown"] = "enabled"
+ else:
+ if conf[state_idx] == "suspended":
+ config["state"] = "suspend"
+ elif conf[state_idx] == "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:
+ split_sp_list = each.split("-")
+ if len(split_sp_list) > 1: # break range
+ for r_sp in range(int(split_sp_list[0]), int(split_sp_list[1]) + 1):
+ remote_span.append(r_sp)
+ else:
+ remote_span.append(int(each))
+ config["remote_span"] = remote_span
+
+ elif vlan_info == "Private" and "Primary Secondary" not in conf:
+ conf = list(filter(None, conf.split(" ")))
+
+ pri_idx = 0
+ sec_idx = 1
+ priv_type_idx = 2
+
+ config["tmp_pvlans"] = {
+ "primary": conf[pri_idx],
+ "secondary": conf[sec_idx],
+ "sec_type": conf[priv_type_idx],
+ }
+ return utils.remove_empties(config)
+
+ def parse_vlan_config(self, vlan_conf):
+ vlan_list = list()
+
+ re1 = re.compile(r"^vlan configuration +(?P<vlan>\d+)$")
+ re2 = re.compile(r"^member +(evpn\-instance +(?P<evi>\d+) )?vni (?P<vni>[\d\-]+)$")
+
+ for line in vlan_conf.splitlines():
+ line = line.strip()
+ m = re1.match(line)
+ if m:
+ vlan = m.groupdict()["vlan"]
+ vlan_dict = {"vlan_id": vlan}
+ continue
+
+ m = re2.match(line)
+ if m:
+ group = m.groupdict()
+ vlan_dict.update({"member": {}})
+ vlan_dict["member"].update({"vni": group["vni"]})
+ if group["evi"]:
+ vlan_dict["member"].update({"evi": group["evi"]})
+ vlan_list.append(vlan_dict)
+
+ return vlan_list
+
+ def parse_vlan(self, data):
objs = []
mtu_objs = []
remote_objs = []
final_objs = []
pvlan_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
@@ -124,6 +250,7 @@ class VlansFacts(object):
pvlan_final = {}
if len(pvlan_objs) > 0:
# Sanitize and structure everything
+
for data in pvlan_objs:
pvdata = data.get("tmp_pvlans")
privlan = pvdata.get("primary")
@@ -151,89 +278,7 @@ class VlansFacts(object):
if vlan_id == every.get("vlan_id"):
every.update(data)
- 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]
- state_idx = 2
- for i in range(2, len(conf)): # check for index where state starts
- if conf[i] in ["suspended", "active"]:
- state_idx = i
- break
- elif conf[i].split("/")[0] in ["sus", "act"]:
- state_idx = i
- break
- config["name"] += " " + conf[i]
- try:
- if len(conf[state_idx].split("/")) > 1:
- _state = conf[state_idx].split("/")[0]
- if _state == "sus":
- config["state"] = "suspend"
- elif _state == "act":
- config["state"] = "active"
- config["shutdown"] = "enabled"
- else:
- if conf[state_idx] == "suspended":
- config["state"] = "suspend"
- elif conf[state_idx] == "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:
- split_sp_list = each.split("-")
- if len(split_sp_list) > 1: # break range
- for r_sp in range(int(split_sp_list[0]), int(split_sp_list[1]) + 1):
- remote_span.append(r_sp)
- else:
- remote_span.append(int(each))
- config["remote_span"] = remote_span
-
- elif vlan_info == "Private" and "Primary Secondary" not in conf:
- conf = list(filter(None, conf.split(" ")))
-
- pri_idx = 0
- sec_idx = 1
- priv_type_idx = 2
-
- config["tmp_pvlans"] = {
- "primary": conf[pri_idx],
- "secondary": conf[sec_idx],
- "sec_type": conf[priv_type_idx],
- }
-
- return utils.remove_empties(config)
+ return objs
+ else:
+ return {}
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vxlan_vtep/__init__.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vxlan_vtep/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vxlan_vtep/__init__.py
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vxlan_vtep/vxlan_vtep.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vxlan_vtep/vxlan_vtep.py
new file mode 100644
index 000000000..0027504e4
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vxlan_vtep/vxlan_vtep.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+"""
+The ios vxlan_vtep fact class
+It is in this file the configuration is collected from the device
+for a given resource, parsed, and the facts tree is populated
+based on the configuration.
+"""
+
+from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import utils
+
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.vxlan_vtep.vxlan_vtep import (
+ Vxlan_vtepArgs,
+)
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.vxlan_vtep import (
+ Vxlan_vtepTemplate,
+)
+
+
+class Vxlan_vtepFacts(object):
+ """The ios vxlan_vtep facts class"""
+
+ def __init__(self, module):
+ self._module = module
+ self.argument_spec = Vxlan_vtepArgs.argument_spec
+
+ def get_vxlan_vtep_data(self, connection):
+ return connection.get("show running-config | section ^interface nve")
+
+ def populate_facts(self, connection, ansible_facts, data=None):
+ """Populate the facts for Vxlan_vtep 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_vxlan_vtep_data(connection)
+
+ # parse native config using the Vxlan_vtep template
+ vxlan_vtep_parser = Vxlan_vtepTemplate(lines=data.splitlines(), module=self._module)
+ objs = list(vxlan_vtep_parser.parse().values())
+
+ ansible_facts["ansible_network_resources"].pop("vxlan_vtep", None)
+
+ params = utils.remove_empties(
+ vxlan_vtep_parser.validate_config(self.argument_spec, {"config": objs}, redact=True),
+ )
+
+ facts["vxlan_vtep"] = params.get("config", {})
+ ansible_facts["ansible_network_resources"].update(facts)
+
+ return ansible_facts
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/acls.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/acls.py
index 164c93caf..b3afd65f9 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/acls.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/acls.py
@@ -16,11 +16,21 @@ the given network resource.
"""
import re
+from ansible.module_utils._text import to_text
from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import (
NetworkTemplate,
)
+def remarks_with_sequence(remarks_data):
+ cmd = "remark "
+ if remarks_data.get("remarks"):
+ cmd += remarks_data.get("remarks")
+ if remarks_data.get("sequence"):
+ cmd = to_text(remarks_data.get("sequence")) + " " + cmd
+ return cmd
+
+
def _tmplt_access_list_entries(aces):
def source_destination_common_config(config_data, command, attr):
if config_data[attr].get("address"):
@@ -63,7 +73,9 @@ def _tmplt_access_list_entries(aces):
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])
+ proto_option = aces["protocol_options"].get(
+ list(aces["protocol_options"])[0],
+ )
elif aces.get("protocol"):
command += " {protocol}".format(**aces)
if aces.get("source"):
@@ -120,7 +132,7 @@ class AclsTemplate(NetworkTemplate):
PARSERS = [
{
- "name": "acls_name",
+ "name": "only_acls_name",
"getval": re.compile(
r"""^(?P<acl_type>Standard|Extended|Reflexive)*
\s*(?P<afi>IP|IPv6)*
@@ -130,8 +142,7 @@ class AclsTemplate(NetworkTemplate):
$""",
re.VERBOSE,
),
- "compval": "name",
- "setval": "name",
+ "setval": "",
"result": {
"acls": {
"{{ acl_name|d() }}": {
@@ -141,80 +152,95 @@ class AclsTemplate(NetworkTemplate):
},
},
},
- "shared": True,
},
{
- "name": "_acls_name",
+ "name": "acls_name",
"getval": re.compile(
- r"""^(ip|ipv6)
+ r"""^(?P<afi>ip|ipv6|mac)
(\s(access-list))
- (\s(standard|extended))
- (\s(?P<acl_name_r>\S+))?
+ (\s(?P<acl_type>standard|extended|reflexive))?
+ (\s(?P<acl_name>\S+))
$""",
re.VERBOSE,
),
- "compval": "name",
- "setval": "ip access-list",
- "result": {},
+ "setval": "name",
+ "result": {
+ "acls": {
+ "{{ acl_name|d() }}": {
+ "name": "{{ acl_name }}",
+ "acl_type": "{{ acl_type.lower() if acl_type is defined }}",
+ "afi": "{{ 'ipv4' if afi == 'ip' else 'ipv6' }}",
+ },
+ },
+ },
"shared": True,
},
{
- "name": "_mac_acls_name", #
+ "name": "remarks",
"getval": re.compile(
- r"""^(?P<acl_type>Standard|Extended|Reflexive)*
- \s*(?P<afi>MAC)*
- \s*access
- \s*list*
- \s*(?P<acl_name>.+)*
+ r"""((?P<order>^\d+))
+ (\s*(?P<sequence>\d+))
+ (\sremark\s(?P<remarks>.+))
$""",
re.VERBOSE,
),
- "compval": "name",
- "setval": "",
+ "setval": remarks_with_sequence,
"result": {
"acls": {
"{{ acl_name|d() }}": {
"name": "{{ acl_name }}",
- "acl_type": "{{ acl_type.lower() if acl_type is defined }}",
- "afi": "{{ afi }}",
+ "aces": [
+ {
+ "the_remark": "{{ remarks }}",
+ "order": "{{ order }}",
+ "is_remark_for": "{{ sequence }}",
+ },
+ ],
},
},
},
- "shared": True,
},
{
- "name": "remarks",
+ "name": "remarks_no_data",
"getval": re.compile(
- r"""\s+remark
- (\s(?P<remarks>.+))?
- $""",
+ r"""(?P<order>^\d+)\s*remark\s(?P<remarks>.+)$""",
re.VERBOSE,
),
- "setval": "remark {{ remarks }}",
+ "setval": "{{ sequence }} remark",
"result": {
"acls": {
- "{{ acl_name_r|d() }}": {
- "name": "{{ acl_name_r }}",
- "aces": [{"remarks": "{{ remarks }}"}],
+ "{{ acl_name|d() }}": {
+ "name": "{{ acl_name }}",
+ "aces": [
+ {
+ "the_remark": "{{ remarks }}",
+ "order": "{{ order }}",
+ "is_remark_for": "remark",
+ },
+ ],
},
},
},
},
{
- "name": "remarks_type_linear",
+ "name": "remarks_ipv6",
"getval": re.compile(
- r"""^(access-list)
- (\s(?P<acl_name_linear>\S+))?
- (\sremark\s(?P<remarks>.+))?
+ r"""\s*(sequence\s(?P<sequence>\d+))
+ (\sremark\s(?P<remarks>.+))
$""",
re.VERBOSE,
),
"setval": "remark {{ remarks }}",
"result": {
"acls": {
- "{{ acl_name_linear|d() }}": {
- "name": "{{ acl_name_linear }}",
- "aces": [{"remarks": "{{ remarks }}"}],
+ "{{ acl_name|d() }}": {
+ "name": "{{ acl_name }}",
+ "aces": [
+ {
+ "sequence": "{{ sequence }}",
+ "remarks": ["{{ remarks }}"],
+ },
+ ],
},
},
},
@@ -222,12 +248,11 @@ class AclsTemplate(NetworkTemplate):
{
"name": "aces_ipv4_standard",
"getval": re.compile(
- r"""\s*(?P<sequence>\d+)*
- \s(?P<grant>deny|permit)?
- (\s+(?P<address>(?!ahp|eigrp|esp|gre|icmp|igmp|ipv6|ipinip|ip|nos|object-group|ospf|pcp|pim|sctp|tcp|udp)\S+|\S+,))?
+ r"""(\s*(?P<sequence>\d+))?
+ (\s(?P<grant>deny|permit))
+ (\s+(?P<address>((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))?
+ (\s(?P<wildcard>((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))?
(\s*(?P<any>any))?
- (\swildcard\sbits\s(?P<wildcard>\S+))?
- (\shost\s(?P<host>\S+))?
(\s(?P<log>log))?
$""",
re.VERBOSE,
@@ -245,7 +270,6 @@ class AclsTemplate(NetworkTemplate):
"address": "{{ address }}",
"wildcard_bits": "{{ wildcard }}",
"any": "{{ not not any }}",
- "host": "{{ host }}",
},
"log": {"set": "{{ not not log }}"},
},
@@ -257,28 +281,39 @@ class AclsTemplate(NetworkTemplate):
{
"name": "aces",
"getval": re.compile(
- r"""\s*((?P<sequence>\d+))?
+ r"""(\s*(?P<sequence>\d+))?
+ (\s*sequence\s(?P<sequence_ipv6>\d+))?
(\s*(?P<grant>deny|permit))
(\sevaluate\s(?P<evaluate>\S+))?
(\s(?P<protocol_num>\d+))?
- (\s(?P<protocol>ahp|eigrp|esp|gre|icmp|igmp|ipv6|ipinip|ip|nos|ospf|pcp|pim|sctp|tcp|udp))?
+ (\s*(?P<protocol>ahp|eigrp|esp|gre|icmp|igmp|ipinip|ipv6|ip|nos|ospf|pcp|pim|sctp|tcp|ip|udp))?
((\s(?P<source_any>any))|
(\sobject-group\s(?P<source_obj_grp>\S+))|
(\shost\s(?P<source_host>\S+))|
+ (\s(?P<ipv6_source_address>\S+/\d+))|
(\s(?P<source_address>(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})\s\S+)))?
- (\s(?P<source_port_protocol>(eq|gts|gt|lt|neq)\s(\S+|\d+)))?
+ (\seq\s(?P<seq>(\S+|\d+)))?
+ (\sgt\s(?P<sgt>(\S+|\d+)))?
+ (\slt\s(?P<slt>(\S+|\d+)))?
+ (\sneq\s(?P<sneq>(\S+|\d+)))?
(\srange\s(?P<srange_start>\d+)\s(?P<srange_end>\d+))?
(\s(?P<dest_any>any))?
(\sobject-group\s(?P<dest_obj_grp>\S+))?
(\shost\s(?P<dest_host>\S+))?
+ (\s(?P<ipv6_dest_address>\S+/\d+))?
(\s(?P<dest_address>(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})\s\S+))?
- (\s(?P<dest_port_protocol>(eq|gts|lt|neq)\s(\S+|\d+)))?
+ (\seq\s(?P<deq>(\S+|\d+)))?
+ (\sgt\s(?P<dgt>(\S+|\d+)))?
+ (\slt\s(?P<dlt>(\S+|\d+)))?
+ (\sneq\s(?P<dneq>(\S+|\d+)))?
(\srange\s(?P<drange_start>\d+)\s(?P<drange_end>\d+))?
(\s(?P<icmp_igmp_tcp_protocol>administratively-prohibited|alternate-address|conversion-error|dod-host-prohibited|dod-net-prohibited|echo-reply|echo|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))?
(\sdscp\s(?P<dscp>\S+))?
(\s(?P<enable_fragments>fragments))?
- (\s(?P<log_input>log-input\s\(tag\s=\s\S+\)|log-input))?
- (\s(?P<log>log\s\(tag\s=\s\S+\)|log))?
+ (\slog-input\s\(tag\s=\s(?P<log_input>\S+\)|log-input))?
+ (\s(?P<log_input_only>log-input))?
+ (\slog\s\(tag\s=\s(?P<log>\S+\)|log))?
+ (\s(?P<log_only>log))?
(\soption\s(?P<option>\S+|\d+))?
(\sprecedence\s(?P<precedence>\S+))?
(\stime-range\s(?P<time_range>\S+))?
@@ -287,7 +322,6 @@ class AclsTemplate(NetworkTemplate):
(\sttl\sgt\s(?P<ttl_gt>\d+))?
(\sttl\slt\s(?P<ttl_lt>\d+))?
(\sttl\sneg\s(?P<ttl_neg>\d+))?
- (\ssequence\s(?P<sequence_ipv6>\d+))?
""",
re.VERBOSE,
),
@@ -308,12 +342,15 @@ class AclsTemplate(NetworkTemplate):
"icmp_igmp_tcp_protocol": "{{ icmp_igmp_tcp_protocol }}",
"source": {
"address": "{{ source_address }}",
+ "ipv6_address": "{{ ipv6_source_address }}",
"any": "{{ not not source_any }}",
"host": "{{ source_host }}",
"object_group": "{{ source_obj_grp }}",
"port_protocol": {
- "{{ source_port_protocol.split(' ')[0] if source_port_protocol is defined else None }}": "{{\
- source_port_protocol.split(' ')[1] if source_port_protocol is defined else None }}",
+ "eq": "{{ seq }}",
+ "gt": "{{ sgt }}",
+ "lt": "{{ slt }}",
+ "neq": "{{ sneq }}",
"range": {
"start": "{{ srange_start if srange_start is defined else None }}",
"end": "{{ srange_end if srange_end is defined else None }}",
@@ -322,12 +359,15 @@ class AclsTemplate(NetworkTemplate):
},
"destination": {
"address": "{{ dest_address }}",
+ "ipv6_address": "{{ ipv6_dest_address }}",
"any": "{{ not not dest_any }}",
"host": "{{ dest_host }}",
"object_group": "{{ dest_obj_grp }}",
"port_protocol": {
- "{{ dest_port_protocol.split(' ')[0] if dest_port_protocol is defined else None }}": "{{\
- dest_port_protocol.split(' ')[1] if dest_port_protocol is defined else None }}",
+ "eq": "{{ deq }}",
+ "gt": "{{ dgt }}",
+ "lt": "{{ dlt }}",
+ "neq": "{{ dneq }}",
"range": {
"start": "{{ drange_start if drange_start is defined else None }}",
"end": "{{ drange_end if drange_end is defined else None }}",
@@ -337,12 +377,12 @@ class AclsTemplate(NetworkTemplate):
"dscp": "{{ dscp }}",
"enable_fragments": "{{ True if enable_fragments is defined else None }}",
"log": {
- "set": "{{ True if log is defined and 'tag' not in log else '' }}",
- "user_cookie": "{{ log.split(' ')[-1].split(')')[0] if log is defined and 'tag' in log else '' }}",
+ "set": "{{ True if log_only is defined or log is defined }}",
+ "user_cookie": "{{ log.split(')')[0] if log is defined }}",
},
"log_input": {
- "set": "{{ True if log_input is defined and 'tag' not in log_input else '' }}",
- "user_cookie": "{{ log_input.split(' ')[-1].split(')')[0] if log_input is defined and 'tag' in log_input }}",
+ "set": "{{ True if log_input_only is defined or log_input is defined }}",
+ "user_cookie": "{{ log_input.split(')')[0] if log_input is defined }}",
},
"option": {
"{{ option if option is defined else None }}": "{{ True if option is defined else None }}",
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_address_family.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_address_family.py
index b9654956c..ca85440b2 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_address_family.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_address_family.py
@@ -1145,7 +1145,7 @@ class Bgp_address_familyTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "neighbor {{ neighbor_address }} filter-list"
- "{{ (' ' + filter_list.as_path_acl) if filter_list.as_path_acl is defined else '' }}"
+ "{{ (' ' + filter_list.as_path_acl|string) if filter_list.as_path_acl is defined else '' }}"
"{{ (' in') if filter_list.in|d(False) else '' }}"
"{{ (' out') if filter_list.out|d(False) else '' }}",
"result": {
@@ -1251,12 +1251,12 @@ class Bgp_address_familyTemplate(NetworkTemplate):
"name": "inherit",
"getval": re.compile(
r"""
- \s\sneighbor\s(?P<neighbor_address>\S+)\sinherit\speer-session
+ \s\sneighbor\s(?P<neighbor_address>\S+)\sinherit\speer-policy
\s(?P<inherit>\S+)
$""",
re.VERBOSE,
),
- "setval": "neighbor {{ neighbor_address }} inherit peer-session"
+ "setval": "neighbor {{ neighbor_address }} inherit peer-policy"
"{{ (' ' + inherit) if inherit is defined else '' }}",
"result": {
"address_family": {
@@ -2670,4 +2670,26 @@ class Bgp_address_familyTemplate(NetworkTemplate):
},
},
# redistribute ends
+ {
+ "name": "advertise",
+ "getval": re.compile(
+ r"""
+ \s\sadvertise\s(?P<ad_afi>l2vpn)
+ (\s(?P<ad_safi>evpn))?
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "advertise {{ advertise.afi }}"
+ "{{ (' ' + advertise.safi ) if advertise.safi is defined else '' }}",
+ "result": {
+ "address_family": {
+ UNIQUE_AFI: {
+ "advertise": {
+ "afi": "{{ ad_afi }}",
+ "safi": "{{ ad_safi }}",
+ },
+ },
+ },
+ },
+ },
]
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_global.py
index 477cbc679..39fd548bc 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_global.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_global.py
@@ -160,7 +160,9 @@ class Bgp_globalTemplate(NetworkTemplate):
"{{ bmp.server_options.address.host }} port-number {{ bmp.server_options.address.port|string }}\nexit-bmp-server-mode",
"result": {
"bmp": {
- "server_options": {"address": {"host": "{{ host }}", "port": "{{ port }}"}},
+ "server_options": {
+ "address": {"host": "{{ host }}", "port": "{{ port }}"},
+ },
},
},
},
@@ -449,7 +451,10 @@ class Bgp_globalTemplate(NetworkTemplate):
},
{
"name": "synchronization",
- "getval": re.compile(r"""\s(?P<synchronization>synchronization)""", re.VERBOSE),
+ "getval": re.compile(
+ r"""\s(?P<synchronization>synchronization)""",
+ re.VERBOSE,
+ ),
"setval": "synchronization",
"result": {"synchronization": "{{ not not synchronization }}"},
},
@@ -466,7 +471,9 @@ class Bgp_globalTemplate(NetworkTemplate):
"setval": "table-map"
"{{ (' ' + name) if name is defined else '' }}"
"{{ (' filter' ) if filter|d(False) else '' }}",
- "result": {"table_map": {"name": "{{ name }}", "filter": "{{ not not filter }}"}},
+ "result": {
+ "table_map": {"name": "{{ name }}", "filter": "{{ not not filter }}"},
+ },
},
{
"name": "timers",
@@ -558,19 +565,28 @@ class Bgp_globalTemplate(NetworkTemplate):
},
{
"name": "bgp.bestpath_options.compare_routerid",
- "getval": re.compile(r"""\s(bgp\sbestpath\scompare-routerid)""", re.VERBOSE),
+ "getval": re.compile(
+ r"""\s(bgp\sbestpath\scompare-routerid)""",
+ re.VERBOSE,
+ ),
"setval": "{{ ('bgp bestpath compare-routerid' ) if bgp.bestpath_options.compare_routerid|d(False) else '' }}",
"result": {"bgp": {"bestpath_options": {"compare_routerid": True}}},
},
{
"name": "bgp.bestpath_options.cost_community",
- "getval": re.compile(r"""\s(bgp\sbestpath\scost-community\signore)""", re.VERBOSE),
+ "getval": re.compile(
+ r"""\s(bgp\sbestpath\scost-community\signore)""",
+ re.VERBOSE,
+ ),
"setval": "{{ ('bgp bestpath cost-community ignore' ) if bgp.bestpath_options.cost_community|d(False) else '' }}",
"result": {"bgp": {"bestpath_options": {"cost_community": True}}},
},
{
"name": "bgp.bestpath_options.igp_metric",
- "getval": re.compile(r"""\s(bgp\sbestpath\sigp-metric\signore)""", re.VERBOSE),
+ "getval": re.compile(
+ r"""\s(bgp\sbestpath\sigp-metric\signore)""",
+ re.VERBOSE,
+ ),
"setval": "bgp bestpath igp-metric ignore",
"result": {"bgp": {"bestpath_options": {"igp_metric": True}}},
},
@@ -790,7 +806,9 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "bgp graceful-restart restart-time {{ bgp.graceful_restart.restart_time|string }}",
- "result": {"bgp": {"graceful_restart": {"restart_time": "{{ restart_time }}"}}},
+ "result": {
+ "bgp": {"graceful_restart": {"restart_time": "{{ restart_time }}"}},
+ },
},
{
"name": "bgp.graceful_restart.stalepath_time",
@@ -802,7 +820,9 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "bgp graceful-restart stalepath-time {{ bgp.graceful_restart.stalepath_time|string }}",
- "result": {"bgp": {"graceful_restart": {"stalepath_time": "{{ stalepath_time }}"}}},
+ "result": {
+ "bgp": {"graceful_restart": {"stalepath_time": "{{ stalepath_time }}"}},
+ },
},
{
"name": "bgp.graceful_shutdown.neighbors",
@@ -824,7 +844,10 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"bgp": {
"graceful_shutdown": {
- "neighbors": {"time": "{{ time }}", "activate": "{{ not not activate }}"},
+ "neighbors": {
+ "time": "{{ time }}",
+ "activate": "{{ not not activate }}",
+ },
"community": "{{ community }}",
"local_preference": "{{ local_preference }}",
},
@@ -851,7 +874,10 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"bgp": {
"graceful_shutdown": {
- "vrfs": {"time": "{{ time }}", "activate": "{{ not not activate }}"},
+ "vrfs": {
+ "time": "{{ time }}",
+ "activate": "{{ not not activate }}",
+ },
"community": "{{ community }}",
"local_preference": "{{ local_preference }}",
},
@@ -1008,7 +1034,9 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "bgp nopeerup-delay cold-boot {{ bgp.nopeerup_delay_options.cold_boot|string }}",
- "result": {"bgp": {"nopeerup_delay_options": {"cold_boot": "{{ cold_boot }}"}}},
+ "result": {
+ "bgp": {"nopeerup_delay_options": {"cold_boot": "{{ cold_boot }}"}},
+ },
},
{
"name": "bgp.nopeerup_delay_options.post_boot",
@@ -1020,7 +1048,9 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "bgp nopeerup-delay post-boot {{ bgp.nopeerup_delay_options.post_boot|string }}",
- "result": {"bgp": {"nopeerup_delay_options": {"post_boot": "{{ post_boot }}"}}},
+ "result": {
+ "bgp": {"nopeerup_delay_options": {"post_boot": "{{ post_boot }}"}},
+ },
},
{
"name": "bgp.nopeerup_delay_options.nsf_switchover",
@@ -1033,7 +1063,9 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "bgp nopeerup-delay nsf-switchover {{ bgp.nopeerup_delay_options.nsf_switchover|string }}",
"result": {
- "bgp": {"nopeerup_delay_options": {"nsf_switchover": "{{ nsf_switchover }}"}},
+ "bgp": {
+ "nopeerup_delay_options": {"nsf_switchover": "{{ nsf_switchover }}"},
+ },
},
},
{
@@ -1047,7 +1079,9 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "bgp nopeerup-delay user-initiated {{ bgp.nopeerup_delay_options.user_initiated|string }}",
"result": {
- "bgp": {"nopeerup_delay_options": {"user_initiated": "{{ user_initiated }}"}},
+ "bgp": {
+ "nopeerup_delay_options": {"user_initiated": "{{ user_initiated }}"},
+ },
},
},
{
@@ -1165,7 +1199,9 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "bgp slow-peer detection threshold {{ bgp.slow_peer.detection.threshold|string }}",
- "result": {"bgp": {"slow_peer": {"detection": {"threshold": "{{ threshold }}"}}}},
+ "result": {
+ "bgp": {"slow_peer": {"detection": {"threshold": "{{ threshold }}"}}},
+ },
},
{
"name": "bgp.slow_peer.split_update_group",
@@ -1356,7 +1392,10 @@ class Bgp_globalTemplate(NetworkTemplate):
"setval": "neighbor {{ neighbor_address }} bmp-activate",
"result": {
"neighbors": {
- "{{ neighbor_address }}": {"bmp_activate": "{{ not not bmp_activate }}"},
+ "{{ neighbor_address }}": {
+ "bmp_activate": "{{ not not bmp_activate }}",
+ "neighbor_address": "{{ neighbor_address }}",
+ },
},
},
},
@@ -1371,7 +1410,12 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "neighbor {{ neighbor_address }} cluster-id",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"cluster_id": "{{ not not cluster_id }}"}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "cluster_id": "{{ not not cluster_id }}",
+ "neighbor_address": "{{ neighbor_address }}",
+ },
+ },
},
},
{
@@ -1408,6 +1452,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"neighbors": {
"{{ neighbor_address }}": {
"disable_connected_check": "{{ not not disable_connected_check }}",
+ "neighbor_address": "{{ neighbor_address }}",
},
},
},
@@ -1431,6 +1476,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"enable": "{{ not not enable }}",
"hop_count": "{{ hop_count }}",
},
+ "neighbor_address": "{{ neighbor_address }}",
},
},
},
@@ -1460,6 +1506,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"single_hop": "{{ not not single_hop }}",
},
},
+ "neighbor_address": "{{ neighbor_address }}",
},
},
},
@@ -1477,7 +1524,10 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
- "fall_over": {"route_map": "{{ not not route_map }}"},
+ "fall_over": {
+ "route_map": "{{ not not route_map }}",
+ "neighbor_address": "{{ neighbor_address }}",
+ },
},
},
},
@@ -1498,7 +1548,11 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
- "ha_mode": {"set": "{{ not not set }}", "disable": "{{ not not disable }}"},
+ "ha_mode": {
+ "set": "{{ not not set }}",
+ "disable": "{{ not not disable }}",
+ },
+ "neighbor_address": "{{ neighbor_address }}",
},
},
},
@@ -1514,7 +1568,14 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "neighbor {{ neighbor_address }} inherit peer-session"
"{{ (' ' + inherit) if inherit is defined else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"inherit": "{{ inherit }}"}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "inherit": "{{ inherit }}",
+ "neighbor_address": "{{ neighbor_address }}",
+ },
+ },
+ },
},
{
"name": "local_as",
@@ -1536,6 +1597,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"local_as": {
"set": "{{ not not local_as }}",
"number": "{{ number }}",
@@ -1618,6 +1680,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"path_attribute": {
"discard": {
"type": "{{ type }}",
@@ -1648,6 +1711,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"path_attribute": {
"treat_as_withdraw": {
"type": "{{ type }}",
@@ -1678,6 +1742,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"shutdown": {
"set": True,
"graceful": "{{ graceful }}",
@@ -1698,7 +1763,14 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "neighbor {{ neighbor_address }}"
"{{ (' soft-reconfiguration inbound') if soft_reconfiguration|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"soft_reconfiguration": True}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "soft_reconfiguration": True,
+ },
+ },
+ },
},
{
"name": "ntimers",
@@ -1718,6 +1790,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"timers": {
"interval": "{{ interval }}",
"holdtime": "{{ holdtime }}",
@@ -1743,6 +1816,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"transport": {
"connection_mode": {
"active": "{{ not not active }}",
@@ -1786,8 +1860,12 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"transport": {
- "path_mtu_discovery": {"set": True, "disable": "{{ not not disable }}"},
+ "path_mtu_discovery": {
+ "set": True,
+ "disable": "{{ not not disable }}",
+ },
},
},
},
@@ -1805,7 +1883,12 @@ class Bgp_globalTemplate(NetworkTemplate):
"setval": "neighbor {{ neighbor_address }} ttl-security"
"{{ (' hops '+ ttl_security|string) if ttl_security is defined else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"ttl_security": "{{ ttl_security }}"}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "ttl_security": "{{ ttl_security }}",
+ },
+ },
},
},
{
@@ -1820,7 +1903,12 @@ class Bgp_globalTemplate(NetworkTemplate):
"setval": "neighbor {{ neighbor_address }} unsuppress-map"
"{{ (' ' + unsuppress_map) if unsuppress_map is defined else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"unsuppress_map": "{{ unsuppress_map }}"}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "unsuppress_map": "{{ unsuppress_map }}",
+ },
+ },
},
},
{
@@ -1874,7 +1962,14 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "neighbor {{ neighbor_address }} weight"
"{{ (' ' + weight|string) if weight is defined else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"weight": "{{ weight }}"}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "weight": "{{ weight }}",
+ },
+ },
+ },
},
# neighbor remote-as ends
# neighbor peer-group starts
@@ -1915,6 +2010,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"additional_paths": {
"disable": "{{ not not disable }}",
"receive": "{{ not not receive }}",
@@ -1942,6 +2038,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"advertise": {
"additional_paths": {
"all": "{{ not not all }}",
@@ -1964,7 +2061,12 @@ class Bgp_globalTemplate(NetworkTemplate):
"setval": "neighbor {{ neighbor_address }}"
"{{ (' advertise best-external') if advertise.best_external|d(False) else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"advertise": {"best-external": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "advertise": {"best-external": True},
+ },
+ },
},
},
{
@@ -1983,6 +2085,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"advertise": {
"diverse_path": {
"backup": "{{ not not backup }}",
@@ -2011,6 +2114,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"advertise_map": {
"name": "{{ name }}",
"exist_map": "{{ exist_map }}",
@@ -2034,6 +2138,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"advertisement_interval": "{{ advertisement_interval }}",
},
},
@@ -2048,7 +2153,14 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "{{ ('neighbor ' + neighbor_address + ' aigp') if aigp.enable|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"aigp": {"enable": True}}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "aigp": {"enable": True},
+ },
+ },
+ },
},
{
"name": "aigp.send.cost_community",
@@ -2070,6 +2182,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"aigp": {
"send": {
"cost_community": {
@@ -2096,7 +2209,14 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "neighbor {{ neighbor_address }}"
"{{ (' aigp send med') if aigp.send.med|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"aigp": {"send": {"med": True}}}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "aigp": {"send": {"med": True}},
+ },
+ },
+ },
},
{
"name": "allow_policy",
@@ -2107,7 +2227,14 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "{{ ('neighbor ' + neighbor_address + ' allow-policy') if allow_policy|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"allow_policy": True}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "allow_policy": True,
+ },
+ },
+ },
},
{
"name": "allowas_in",
@@ -2120,7 +2247,14 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "neighbor {{ neighbor_address }}"
"{{ (' allowas-in ' + allowas_in|string) if allowas_in is defined else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"allowas_in": "{{ allowas_in }}"}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "allowas_in": "{{ allowas_in }}",
+ },
+ },
+ },
},
{
"name": "as_override",
@@ -2132,7 +2266,14 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "neighbor {{ neighbor_address }}"
"{{ (' as-override') if as_override|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"as_override": True}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "as_override": True,
+ },
+ },
+ },
},
{
"name": "bmp_activate",
@@ -2151,7 +2292,10 @@ class Bgp_globalTemplate(NetworkTemplate):
"neighbors": {
"{{ neighbor_address }}": {
"neighbor_address": "{{ neighbor_address }}",
- "bmp_activate": {"server": "{{ server }}", "all": "{{ not not all }}"},
+ "bmp_activate": {
+ "server": "{{ server }}",
+ "all": "{{ not not all }}",
+ },
},
},
},
@@ -2174,6 +2318,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"capability": {
"both": "{{ not not both }}",
"receive": "{{ not not receive }}",
@@ -2193,7 +2338,12 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "{{ ('neighbor ' + neighbor_address + ' default-originate') if default_originate.set|d(False) else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"default_originate": {"set": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "default_originate": {"set": True},
+ },
+ },
},
},
{
@@ -2210,6 +2360,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"default-originate": {"route_map": "{{ route_map }}"},
},
},
@@ -2233,6 +2384,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"distribute_list": {
"acl": "{{ acl }}",
"in": "{{ not not in }}",
@@ -2251,7 +2403,14 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "{{ ('neighbor ' + neighbor_address + ' dmzlink-bw') if dmzlink_bw|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"dmzlink_bw": True}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "dmzlink_bw": True,
+ },
+ },
+ },
},
{
"name": "filter_list",
@@ -2271,6 +2430,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"filter_list": {
"path_acl": "{{ acl }}",
"in": "{{ not not in }}",
@@ -2300,6 +2460,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"maximum_prefix": {
"max_no": "{{ max_no }}",
"threshold_val": "{{ threshold_val }}",
@@ -2319,7 +2480,14 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "{{ ('neighbor ' + neighbor_address + ' next-hop-self') if next_hop_self.set|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"next_hop_self": {"set": True}}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "next_hop_self": {"set": True},
+ },
+ },
+ },
},
{
"name": "next_hop_self.all",
@@ -2330,7 +2498,14 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "{{ ('neighbor ' + neighbor_address + ' next-hop-self all') if next_hop_self.all|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"next_hop_self": {"all": True}}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "next_hop_self": {"all": True},
+ },
+ },
+ },
},
{
"name": "next_hop_unchanged.set",
@@ -2342,7 +2517,12 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "{{ ('neighbor ' + neighbor_address + ' next-hop-unchanged') if next_hop_unchanged.set|d(False) else ''}}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"next_hop_unchanged": {"set": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "next_hop_unchanged": {"set": True},
+ },
+ },
},
},
{
@@ -2355,7 +2535,12 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "{{ ('neighbor ' + neighbor_address + ' next-hop-unchanged allpaths') if next_hop_unchanged.allpaths|d(False) else ''}}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"next_hop_unchanged": {"allpaths": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "next_hop_unchanged": {"allpaths": True},
+ },
+ },
},
},
{
@@ -2368,7 +2553,12 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "{{ ('neighbor ' + neighbor_address + ' remove-private-as') if remove_private_as.set|d(False) else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"remove_private_as": {"set": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "remove_private_as": {"set": True},
+ },
+ },
},
},
{
@@ -2381,7 +2571,12 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "{{ ('neighbor ' + neighbor_address + ' remove-private-as all') if remove_private_as.all|d(False) else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"remove_private_as": {"all": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "remove_private_as": {"all": True},
+ },
+ },
},
},
{
@@ -2395,7 +2590,12 @@ class Bgp_globalTemplate(NetworkTemplate):
"setval": "{{ ('neighbor ' + neighbor_address + ' remove-private-as replace-as') if remove_private_as.replace_as|d(False) else ''}}",
"result": {
"neighbors": {
- "{{ neighbor_address }}": {"remove_private_as": {"replace_as": True}},
+ "{{ neighbor_address }}": {
+ "remove_private_as": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "replace_as": True,
+ },
+ },
},
},
},
@@ -2456,7 +2656,12 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "{{ ('neighbor ' + neighbor_address + ' route-server-client') if route_server_client.set|d(False) else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"route_server_client": {"set": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "route_server_client": {"set": True},
+ },
+ },
},
},
{
@@ -2472,7 +2677,10 @@ class Bgp_globalTemplate(NetworkTemplate):
"{{ (' context ' + route_server_client.context) if route_server_client.context is defined else '' }}",
"result": {
"neighbors": {
- "{{ neighbor_address }}": {"route_server_client": {"context": "{{ context }}"}},
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "route_server_client": {"context": "{{ context }}"},
+ },
},
},
},
@@ -2485,7 +2693,14 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "{{ ('neighbor ' + neighbor_address + ' send-community') if send_community.set|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"send_community": {"set": True}}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "send_community": {"set": True},
+ },
+ },
+ },
},
{
"name": "send_community.both",
@@ -2497,7 +2712,14 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "neighbor {{ neighbor_address }} send-community"
"{{ (' both') if send_community.both|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"send_community": {"both": True}}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "send_community": {"both": True},
+ },
+ },
+ },
},
{
"name": "send_community.extended",
@@ -2510,7 +2732,12 @@ class Bgp_globalTemplate(NetworkTemplate):
"setval": "neighbor {{ neighbor_address }} send-community"
"{{ (' extended') if send_community.extended|d(False) else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"send_community": {"extended": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "send_community": {"extended": True},
+ },
+ },
},
},
{
@@ -2524,7 +2751,12 @@ class Bgp_globalTemplate(NetworkTemplate):
"setval": "neighbor {{ neighbor_address }} send-community"
"{{ (' standard') if send_community.standard|d(False) else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"send_community": {"standard": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "send_community": {"standard": True},
+ },
+ },
},
},
{
@@ -2536,7 +2768,14 @@ class Bgp_globalTemplate(NetworkTemplate):
re.VERBOSE,
),
"setval": "{{ ('neighbor ' + neighbor_address + ' send-label') if send_label.set|d(False) else '' }}",
- "result": {"neighbors": {"{{ neighbor_address }}": {"send_label": {"set": True}}}},
+ "result": {
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "send_label": {"set": True},
+ },
+ },
+ },
},
{
"name": "send_label.explicit_null",
@@ -2549,7 +2788,12 @@ class Bgp_globalTemplate(NetworkTemplate):
"setval": "neighbor {{ neighbor_address }} send-label"
"{{ (' explicit-null') if send_label.explicit_null|d(False) else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"send_label": {"explicit_null": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "send_label": {"explicit_null": True},
+ },
+ },
},
},
{
@@ -2570,6 +2814,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"slow_peer": {
"detection": {
"enable": "{{ not not enable }}",
@@ -2601,6 +2846,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"slow_peer": {
"split_update_group": {
"static": "{{ not not static }}",
@@ -2625,7 +2871,12 @@ class Bgp_globalTemplate(NetworkTemplate):
),
"setval": "{{ ('neighbor ' + neighbor_address + ' translate_update') if translate_update.set|d(False) else '' }}",
"result": {
- "neighbors": {"{{ neighbor_address }}": {"translate_update": {"set": True}}},
+ "neighbors": {
+ "{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
+ "translate_update": {"set": True},
+ },
+ },
},
},
{
@@ -2644,6 +2895,7 @@ class Bgp_globalTemplate(NetworkTemplate):
"result": {
"neighbors": {
"{{ neighbor_address }}": {
+ "neighbor_address": "{{ neighbor_address }}",
"translate_update": {
"nlri": {
"multicast": "{{ not not multicast }}",
@@ -2806,7 +3058,12 @@ class Bgp_globalTemplate(NetworkTemplate):
"remval": "redistribute iso-igrp {{ iso_igrp.area_tag }}",
"result": {
"redistribute": [
- {"iso_igrp": {"area_tag": "{{ name }}", "route_map": "{{ route_map }}"}},
+ {
+ "iso_igrp": {
+ "area_tag": "{{ name }}",
+ "route_map": "{{ route_map }}",
+ },
+ },
],
},
},
@@ -3049,7 +3306,9 @@ class Bgp_globalTemplate(NetworkTemplate):
"{{ (' global') if vrf.global|d(False) else '' }}",
"remval": "redistribute vrf {{ vrf.name }}",
"result": {
- "redistribute": [{"vrf": {"name": "{{ name }}", "global": "{{ not not global }}"}}],
+ "redistribute": [
+ {"vrf": {"name": "{{ name }}", "global": "{{ not not global }}"}},
+ ],
},
},
# redistribute ends
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/evpn_evi.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/evpn_evi.py
new file mode 100644
index 000000000..e58445ba3
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/evpn_evi.py
@@ -0,0 +1,121 @@
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+"""
+The Evpn_evi parser templates file. This contains
+a list of parser definitions and associated functions that
+facilitates both facts gathering and native command generation for
+the given network resource.
+"""
+
+import re
+
+from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import (
+ NetworkTemplate,
+)
+
+
+class Evpn_eviTemplate(NetworkTemplate):
+ def __init__(self, lines=None, module=None):
+ super(Evpn_eviTemplate, self).__init__(lines=lines, tmplt=self, module=module)
+
+ # fmt: off
+ PARSERS = [
+ {
+ "name": "evi",
+ "getval": re.compile(
+ r"""^l2vpn\sevpn\sinstance\s
+ (?P<evi>\d+)\svlan-based
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "l2vpn evpn instance {{ evi }} vlan-based",
+ "result": {"{{ evi }}": {"evi": "{{ evi }}"}},
+ "shared": True,
+ },
+ {
+ "name": "default_gateway.advertise.enable",
+ "getval": re.compile(
+ r"""
+ \s+default-gateway\sadvertise\senable
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "default-gateway advertise enable",
+ "result": {"{{ evi }}": {"default_gateway": {"advertise": {"enable": True}}}},
+ },
+ {
+ "name": "default_gateway.advertise.disable",
+ "getval": re.compile(
+ r"""
+ \s+default-gateway\sadvertise\sdisable
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "default-gateway advertise disable",
+ "result": {"{{ evi }}": {"default_gateway": {"advertise": {"disable": True}}}},
+ },
+ {
+ "name": "encapsulation",
+ "getval": re.compile(
+ r"""
+ \s+encapsulation\s(?P<encapsulation>\S+)
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "encapsulation {{encapsulation}}",
+ "result": {"{{ evi }}": {"encapsulation": "{{ encapsulation }}"}},
+ },
+ {
+ "name": "ip.local_learning.enable",
+ "getval": re.compile(
+ r"""
+ \s+ip\slocal-learning\senable
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "ip local-learning enable",
+ "result": {"{{ evi }}": {"ip": {"local_learning": {"enable": True}}}},
+ },
+ {
+ "name": "ip.local_learning.disable",
+ "getval": re.compile(
+ r"""
+ \s+ip\slocal-learning\sdisable
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "ip local-learning disable",
+ "result": {"{{ evi }}": {"ip": {"local_learning": {"disable": True}}}},
+ },
+ {
+ "name": "replication_type",
+ "getval": re.compile(
+ r"""
+ \s+replication-type\s(?P<replication_type>\S+)
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "replication-type {{ replication_type }}",
+ "result": {"{{ evi }}": {"replication_type": "{{ replication_type }}"}},
+ },
+ {
+ "name": "route_distinguisher",
+ "getval": re.compile(
+ r"""
+ \s+rd\s(?P<route_distinguisher>\S+)
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "rd {{ route_distinguisher }}",
+ "result": {"{{ evi }}": {"route_distinguisher": "{{ route_distinguisher }}"}},
+ },
+ ]
+ # fmt: on
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/evpn_global.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/evpn_global.py
new file mode 100644
index 000000000..2dfae2a11
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/evpn_global.py
@@ -0,0 +1,115 @@
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+"""
+The Evpn_global parser templates file. This contains
+a list of parser definitions and associated functions that
+facilitates both facts gathering and native command generation for
+the given network resource.
+"""
+
+import re
+
+from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import (
+ NetworkTemplate,
+)
+
+
+class Evpn_globalTemplate(NetworkTemplate):
+ def __init__(self, lines=None, module=None):
+ super(Evpn_globalTemplate, self).__init__(lines=lines, tmplt=self, module=module)
+
+ # fmt: off
+ PARSERS = [
+ {
+ "name": "default_gateway.advertise",
+ "getval": re.compile(
+ r"""
+ \sdefault-gateway\sadvertise
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "default-gateway advertise",
+ "result": {"default_gateway": {"advertise": True}},
+ },
+ {
+ "name": "flooding_suppression.address_resolution.disable",
+ "getval": re.compile(
+ r"""
+ \sflooding-suppression\saddress-resolution\sdisable
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "flooding-suppression address-resolution disable",
+ "result": {
+ "flooding_suppression": {
+ "address_resolution": {
+ "disable": True,
+ },
+ },
+ },
+ "shared": True,
+ },
+ {
+ "name": "ip.local_learning.disable",
+ "getval": re.compile(
+ r"""
+ \sip\slocal-learning\sdisable
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "ip local-learning disable",
+ "result": {
+ "ip": {
+ "local_learning": {
+ "disable": True,
+ },
+ },
+ },
+ "shared": True,
+ },
+ {
+ "name": "replication_type",
+ "getval": re.compile(
+ r"""
+ \sreplication-type\s(?P<replication_type>\S+)
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "replication-type {{replication_type}}",
+ "result": {"replication_type": "{{replication_type}}"},
+ "shared": True,
+ },
+ {
+ "name": "route_target.auto.vni",
+ "getval": re.compile(
+ r"""
+ \sroute-target\sauto\svni
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "route-target auto vni",
+ "result": {"route_target": {"auto": {"vni": True}}},
+ "shared": True,
+ },
+ {
+ "name": "router_id",
+ "getval": re.compile(
+ r"""
+ \srouter-id\s(?P<router_id>\S+)
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "router-id {{ router_id }}",
+ "result": {"router_id": "{{router_id}}"},
+ "shared": True,
+ },
+ ]
+ # fmt: on
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv2.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv2.py
index 5b746e507..74b380cc5 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv2.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv2.py
@@ -5,31 +5,11 @@ __metaclass__ = type
import re
-from ansible.module_utils.six import iteritems
from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import (
NetworkTemplate,
)
-def _tmplt_ospf_vrf_cmd(process):
- command = "router ospf {process_id}".format(**process)
- if "vrf" in process:
- command += " vrf {vrf}".format(**process)
- return command
-
-
-def _tmplt_ospf_adjacency_cmd(config_data):
- if "adjacency" in config_data:
- command = "adjacency stagger "
- if "none" in config_data["adjacency"]:
- command += " none"
- else:
- command += " {min_adjacency}".format(**config_data["adjacency"])
- if "max_adjacency" in config_data["adjacency"]:
- command += " {min_adjacency}".format(**config_data["adjacency"])
- return command
-
-
def _tmplt_ospf_address_family_cmd(config_data):
if "address_family" in config_data:
command = ["address-family ipv4 multicast", "exit-address-family"]
@@ -44,207 +24,30 @@ def _tmplt_ospf_address_family_cmd(config_data):
return command
-def _tmplt_ospf_area_authentication(config_data):
- if "authentication" in config_data:
- command = "area {area_id} authentication".format(**config_data)
- if config_data["authentication"].get("message_digest"):
- command += " message-digest"
- return command
-
-
-def _tmplt_ospf_area_filter(config_data):
- if "filter_list" in config_data:
- command = []
- for key, value in iteritems(config_data.get("filter_list")):
- cmd = "area {area_id}".format(**config_data)
- if value.get("name") and value.get("direction"):
- cmd += " filter-list prefix {name} {direction}".format(**value)
- command.append(cmd)
- return command
-
-
def _tmplt_ospf_area_nssa(config_data):
if "nssa" in config_data:
+ nssa_data = config_data["nssa"]
command = "area {area_id} nssa".format(**config_data)
- if "default_information_originate" in config_data["nssa"]:
+ if "default_information_originate" in nssa_data:
+ default_info = nssa_data["default_information_originate"]
command += " default-information-originate"
- if "metric" in config_data["nssa"]["default_information_originate"]:
- command += " metric {metric}".format(
- **config_data["nssa"]["default_information_originate"]
- )
- if "metric_type" in config_data["nssa"]["default_information_originate"]:
- command += " metric-type {metric_type}".format(
- **config_data["nssa"]["default_information_originate"]
- )
- if "nssa_only" in config_data["nssa"]["default_information_originate"]:
+ metric = default_info.get("metric")
+ if metric is not None:
+ command += " metric {metric}".format(metric=metric)
+ metric_type = default_info.get("metric_type")
+ if metric_type is not None:
+ command += " metric-type {metric_type}".format(metric_type=metric_type)
+ if default_info.get("nssa_only"):
command += " nssa-only"
- if config_data["nssa"].get("no_ext_capability"):
+ if nssa_data.get("no_ext_capability"):
command += " no-ext-capability"
- if config_data["nssa"].get("no_redistribution"):
+ if nssa_data.get("no_redistribution"):
command += " no-redistribution"
- if config_data["nssa"].get("no_summary"):
- command += " no-summary"
- return command
-
-
-def _tmplt_ospf_area_nssa_translate(config_data):
- if "nssa" in config_data:
- command = "area {area_id} nssa".format(**config_data)
- if "translate" in config_data["nssa"]:
- command += " translate type7 {translate}".format(**config_data["nssa"])
- return command
-
-
-def _tmplt_ospf_area_ranges(config_data):
- if "ranges" in config_data:
- commands = []
- for k, v in iteritems(config_data["ranges"]):
- cmd = "area {area_id} range".format(**config_data)
- temp_cmd = " {address} {netmask}".format(**v)
- if "advertise" in v:
- temp_cmd += " advertise"
- elif "not_advertise" in v:
- temp_cmd += " not-advertise"
- if "cost" in v:
- temp_cmd += " cost {cost}".format(**v)
- cmd += temp_cmd
- commands.append(cmd)
- return commands
-
-
-def _tmplt_ospf_area_sham_link(config_data):
- if "sham_link" in config_data:
- command = "area {area_id} sham-link".format(**config_data)
- if "source" in config_data["sham_link"]:
- command += " {source} {destination}".format(**config_data["sham_link"])
- if "cost" in config_data["sham_link"]:
- command += " cost {cost}".format(**config_data["sham_link"])
- if "ttl_security" in config_data["sham_link"]:
- command += " ttl-security hops {ttl_security}".format(**config_data["sham_link"])
- return command
-
-
-def _tmplt_ospf_area_stub_link(config_data):
- if "stub" in config_data:
- command = "area {area_id} stub".format(**config_data)
- if "no_ext_capability" in config_data["stub"]:
- command += " no-ext-capability"
- if "no_summary" in config_data["stub"]:
+ if nssa_data.get("no_summary"):
command += " no-summary"
return command
-def _tmplt_ospf_auto_cost(config_data):
- if "auto_cost" in config_data:
- command = "auto-cost"
- if "reference_bandwidth" in config_data["auto_cost"]:
- command += " reference-bandwidth {reference_bandwidth}".format(
- **config_data["auto_cost"]
- )
- return command
-
-
-def _tmplt_ospf_capability(config_data):
- if "capability" in config_data:
- if "lls" in config_data["capability"]:
- command = "capability lls"
- elif "opaque" in config_data["capability"]:
- command = "capability opaque"
- elif "transit" in config_data["capability"]:
- command = "capability transit"
- elif "vrf_lite" in config_data["capability"]:
- command = "capability vrf-lite"
- return command
-
-
-def _tmplt_ospf_compatible(config_data):
- if "compatible" in config_data:
- if "rfc1583" in config_data["compatible"]:
- command = "compatible rfc1583"
- elif "rfc1587" in config_data["compatible"]:
- command = "compatible rfc1587"
- elif "rfc5243" in config_data["compatible"]:
- command = "compatible rfc5243"
- return command
-
-
-def _tmplt_ospf_default_information(config_data):
- if "default_information" in config_data:
- command = "default-information"
- if "originate" in config_data["default_information"]:
- command += " originate"
- if "always" in config_data["default_information"]:
- command += " always"
- if "metric" in config_data["default_information"]:
- command += " metric {metric}".format(**config_data["default_information"])
- if "metric_type" in config_data["default_information"]:
- command += " metric-type {metric_type}".format(**config_data["default_information"])
- if "metric" in config_data["default_information"]:
- command += " route-map {route_map}".format(**config_data["default_information"])
- return command
-
-
-def _tmplt_ospf_discard_route(config_data):
- if "discard_route" in config_data:
- command = "discard-route"
- if "external" in config_data["discard_route"]:
- command += " external {external}".format(**config_data["discard_route"])
- if "internal" in config_data["discard_route"]:
- command += " internal {internal}".format(**config_data["discard_route"])
- return command
-
-
-def _tmplt_ospf_distance_admin_distance(config_data):
- if "admin_distance" in config_data["distance"]:
- command = "distance {distance}".format(**config_data["distance"]["admin_distance"])
- if "address" in config_data["distance"]["admin_distance"]:
- command += " {address} {wildcard_bits}".format(
- **config_data["distance"]["admin_distance"]
- )
- if "acl" in config_data["distance"]["admin_distance"]:
- command += " {acl}".format(**config_data["distance"]["admin_distance"])
- return command
-
-
-def _tmplt_ospf_distance_ospf(config_data):
- if "ospf" in config_data["distance"]:
- command = "distance ospf"
- if "inter_area" in config_data["distance"]["ospf"]:
- command += " inter-area {inter_area}".format(**config_data["distance"]["ospf"])
- if config_data["distance"].get("ospf").get("intra_area"):
- command += " intra-area {intra_area}".format(**config_data["distance"]["ospf"])
- if config_data["distance"].get("ospf").get("external"):
- command += " external {external}".format(**config_data["distance"]["ospf"])
- return command
-
-
-def _tmplt_ospf_distribute_list_acls(config_data):
- if "acls" in config_data.get("distribute_list"):
- command = []
- for k, v in iteritems(config_data["distribute_list"]["acls"]):
- cmd = "distribute-list {name} {direction}".format(**v)
- if "interface" in v:
- cmd += " {interface}".format(**v)
- if "protocol" in v:
- cmd += " {protocol}".format(**v)
- command.append(cmd)
- return command
-
-
-def _tmplt_ospf_distribute_list_prefix(config_data):
- if "prefix" in config_data.get("distribute_list"):
- command = "distribute-list prefix {name}".format(**config_data["distribute_list"]["prefix"])
- if "gateway_name" in config_data["distribute_list"]["prefix"]:
- command += " gateway {gateway_name}".format(**config_data["distribute_list"]["prefix"])
- if "direction" in config_data["distribute_list"]["prefix"]:
- command += " {direction}".format(**config_data["distribute_list"]["prefix"])
- if "interface" in config_data["distribute_list"]["prefix"]:
- command += " {interface}".format(**config_data["distribute_list"]["prefix"])
- if "protocol" in config_data["distribute_list"]["prefix"]:
- command += " {protocol}".format(**config_data["distribute_list"]["prefix"])
- return command
-
-
def _tmplt_ospf_domain_id(config_data):
if "domain_id" in config_data:
command = "domain-id"
@@ -252,76 +55,12 @@ def _tmplt_ospf_domain_id(config_data):
if "address" in config_data["domain_id"]["ip_address"]:
command += " {address}".format(**config_data["domain_id"]["ip_address"])
if "secondary" in config_data["domain_id"]["ip_address"]:
- command += " {secondary}".format(**config_data["domain_id"]["ip_address"])
+ command += " secondary".format(**config_data["domain_id"]["ip_address"])
elif "null" in config_data["domain_id"]:
command += " null"
return command
-def _tmplt_ospf_event_log(config_data):
- if "event_log" in config_data:
- command = "event-log"
- if "one_shot" in config_data["event_log"]:
- command += " one-shot"
- if "pause" in config_data["event_log"]:
- command += " pause"
- if "size" in config_data["event_log"]:
- command += " size {size}".format(**config_data["event_log"])
- return command
-
-
-def _tmplt_ospf_limit(config_data):
- if "limit" in config_data:
- command = "limit retransmissions"
- if "dc" in config_data["limit"]:
- if "number" in config_data["limit"]["dc"]:
- command += " dc {number}".format(**config_data["limit"]["dc"])
- if "disable" in config_data["limit"]["dc"]:
- command += " dc disable"
- if "non_dc" in config_data["limit"]:
- if "number" in config_data["limit"]["non_dc"]:
- command += " non-dc {number}".format(**config_data["limit"]["non_dc"])
- if "disable" in config_data["limit"]["dc"]:
- command += " non-dc disable"
- return command
-
-
-def _tmplt_ospf_vrf_local_rib_criteria(config_data):
- if "local_rib_criteria" in config_data:
- command = "local-rib-criteria"
- if "forwarding_address" in config_data["local_rib_criteria"]:
- command += " forwarding-address"
- if "inter_area_summary" in config_data["local_rib_criteria"]:
- command += " inter-area-summary"
- if "nssa_translation" in config_data["local_rib_criteria"]:
- command += " nssa-translation"
- return command
-
-
-def _tmplt_ospf_log_adjacency_changes(config_data):
- if "log_adjacency_changes" in config_data:
- command = "log-adjacency-changes"
- if "detail" in config_data["log_adjacency_changes"]:
- command += " detail"
- return command
-
-
-def _tmplt_ospf_max_lsa(config_data):
- if "max_lsa" in config_data:
- command = "max-lsa {number}".format(**config_data["max_lsa"])
- if "threshold_value" in config_data["max_lsa"]:
- command += " {threshold_value}".format(**config_data["max_lsa"])
- if "ignore_count" in config_data["max_lsa"]:
- command += " ignore-count {ignore_count}".format(**config_data["max_lsa"])
- if "ignore_time" in config_data["max_lsa"]:
- command += " ignore-time {ignore_time}".format(**config_data["max_lsa"])
- if "reset_time" in config_data["max_lsa"]:
- command += " reset-time {reset_time}".format(**config_data["max_lsa"])
- if "warning_only" in config_data["max_lsa"]:
- command += " warning-only"
- return command
-
-
def _tmplt_ospf_max_metric(config_data):
if "max_metric" in config_data:
command = "max-metric"
@@ -341,18 +80,6 @@ def _tmplt_ospf_max_metric(config_data):
return command
-def _tmplt_ospf_mpls_ldp(config_data):
- if "ldp" in config_data["mpls"]:
- command = "mpls ldp"
- if "autoconfig" in config_data["mpls"]["ldp"]:
- command += " autoconfig"
- if "area" in config_data["mpls"]["ldp"]["autoconfig"]:
- command += " area {area}".format(**config_data["mpls"]["ldp"]["autoconfig"])
- elif "sync" in config_data["mpls"]["ldp"]:
- command += " sync"
- return command
-
-
def _tmplt_ospf_mpls_traffic_eng(config_data):
if "traffic_eng" in config_data["mpls"]:
command = "mpls traffic-eng"
@@ -360,17 +87,17 @@ def _tmplt_ospf_mpls_traffic_eng(config_data):
command += " area {area}".format(**config_data["mpls"]["traffic_eng"])
elif "autoroute_exclude" in config_data["mpls"]["traffic_eng"]:
command += " autoroute-exclude prefix-list {autoroute_exclude}".format(
- **config_data["mpls"]["traffic_eng"]
+ **config_data["mpls"]["traffic_eng"],
)
elif "interface" in config_data["mpls"]["traffic_eng"]:
command += " interface {int_type}".format(
- **config_data["mpls"]["traffic_eng"]["interface"]
+ **config_data["mpls"]["traffic_eng"]["interface"],
)
if "area" in config_data["mpls"]["traffic_eng"]["interface"]:
command += " area {area}".format(**config_data["mpls"]["traffic_eng"]["interface"])
elif "mesh_group" in config_data["mpls"]["traffic_eng"]:
command += " mesh-group {id} {interface}".format(
- **config_data["mpls"]["traffic_eng"]["mesh_group"]
+ **config_data["mpls"]["traffic_eng"]["mesh_group"],
)
if "area" in config_data["mpls"]["traffic_eng"]["mesh_group"]:
command += " area {area}".format(**config_data["mpls"]["traffic_eng"]["mesh_group"])
@@ -378,7 +105,7 @@ def _tmplt_ospf_mpls_traffic_eng(config_data):
command += " multicast-intact"
elif "router_id_interface" in config_data["mpls"]["traffic_eng"]:
command += " router-id {router_id_interface}".format(
- **config_data["mpls"]["traffic_eng"]
+ **config_data["mpls"]["traffic_eng"],
)
return command
@@ -399,61 +126,8 @@ def _tmplt_ospf_neighbor(config_data):
return command
-def _tmplt_ospf_network(config_data):
- if "network" in config_data:
- command = []
- for each in config_data["network"]:
- cmd = "network"
- if "address" in each:
- cmd += " {address} {wildcard_bits}".format(**each)
- if "area" in each:
- cmd += " area {area}".format(**each)
- command.append(cmd)
- return command
-
-
-def _tmplt_ospf_nsf_cisco(config_data):
- if "cisco" in config_data["nsf"]:
- command = "nsf cisco helper"
- if "disable" in config_data["nsf"]["cisco"]:
- command += " disable"
- return command
-
-
-def _tmplt_ospf_nsf_ietf(config_data):
- if "ietf" in config_data["nsf"]:
- command = "nsf ietf helper"
- if "disable" in config_data["nsf"]["ietf"]:
- command += " disable"
- elif "strict_lsa_checking" in config_data["nsf"]["ietf"]:
- command += " strict-lsa-checking"
- return command
-
-
-def _tmplt_ospf_queue_depth_hello(config_data):
- if "hello" in config_data["queue_depth"]:
- command = "queue-depth hello"
- if "max_packets" in config_data["queue_depth"]["hello"]:
- command += " {max_packets}".format(**config_data["queue_depth"]["hello"])
- elif "unlimited" in config_data["queue_depth"]["hello"]:
- command += " unlimited"
- return command
-
-
-def _tmplt_ospf_queue_depth_update(config_data):
- if "update" in config_data["queue_depth"]:
- command = "queue-depth update"
- if "max_packets" in config_data["queue_depth"]["update"]:
- command += " {max_packets}".format(**config_data["queue_depth"]["update"])
- elif "unlimited" in config_data["queue_depth"]["update"]:
- command += " unlimited"
- return command
-
-
def _tmplt_ospf_passive_interfaces(config_data):
if "passive_interfaces" in config_data:
- if config_data["passive_interfaces"].get("default"):
- cmd = "passive-interface default"
if config_data["passive_interfaces"].get("interface"):
if config_data["passive_interfaces"].get("set_interface"):
for each in config_data["passive_interfaces"]["interface"]:
@@ -464,38 +138,6 @@ def _tmplt_ospf_passive_interfaces(config_data):
return cmd
-def _tmplt_ospf_summary_address(config_data):
- if "summary_address" in config_data:
- command = "summary-address {address} {mask}".format(**config_data["summary_address"])
- if "not_advertise" in config_data["summary_address"]:
- command += " not-advertise"
- elif "nssa_only" in config_data["summary_address"]:
- command += " nssa-only"
- if "tag" in config_data["summary_address"]:
- command += " tag {tag}".format(**config_data["summary_address"])
- return command
-
-
-def _tmplt_ospf_timers_pacing(config_data):
- if "pacing" in config_data["timers"]:
- command = "timers pacing"
- if "flood" in config_data["timers"]["pacing"]:
- command += " flood {flood}".format(**config_data["timers"]["pacing"])
- elif "lsa_group" in config_data["timers"]["pacing"]:
- command += " lsa-group {lsa_group}".format(**config_data["timers"]["pacing"])
- elif "retransmission" in config_data["timers"]["pacing"]:
- command += " retransmission {retransmission}".format(**config_data["timers"]["pacing"])
- return command
-
-
-def _tmplt_ospf_ttl_security(config_data):
- if "ttl_security" in config_data:
- command = "ttl-security all-interfaces"
- if "hops" in config_data["ttl_security"]:
- command += " hops {hops}".format(**config_data["ttl_security"])
- return command
-
-
class Ospfv2Template(NetworkTemplate):
def __init__(self, lines=None):
super(Ospfv2Template, self).__init__(lines=lines, tmplt=self)
@@ -505,52 +147,40 @@ class Ospfv2Template(NetworkTemplate):
"name": "pid",
"getval": re.compile(
r"""
- ^router\s
- ospf*
- \s(?P<pid>\S+)
- \svrf
- \s(?P<vrf>\S+)
- $""",
+ ^router\sospf
+ (\s(?P<pid>\d+))
+ (\s(vrf\s(?P<vrf_value>\S+)))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_vrf_cmd,
+ "setval": "router ospf {{ process_id }}"
+ "{{ (' vrf ' + vrf ) if vrf is defined else '' }}",
"result": {
- "processes": {"{{ pid }}": {"process_id": "{{ pid|int }}", "vrf": "{{ vrf }}"}},
+ "processes": {
+ "{{ pid }}": {"process_id": "{{ pid|int }}", "vrf": "{{ vrf_value }}"},
+ },
},
"shared": True,
},
{
- "name": "pid",
- "getval": re.compile(
- r"""
- ^router\s
- ospf*
- \s(?P<pid>\S+)
- $""",
- re.VERBOSE,
- ),
- "setval": _tmplt_ospf_vrf_cmd,
- "result": {"processes": {"{{ pid }}": {"process_id": "{{ pid|int }}"}}},
- "shared": True,
- },
- {
"name": "adjacency",
"getval": re.compile(
- r"""\s+adjacency
- \sstagger*
- \s*((?P<min>\d+)|(?P<none_adj>none))*
- \s*(?P<max>\S+)
- *$""",
+ r"""
+ \sadjacency\sstagger
+ (\s(?P<min>\d+))?
+ (\s(?P<none>none))?
+ (\s(?P<max>\d+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_adjacency_cmd,
+ "setval": "adjacency stagger {{ 'none' if adjacency.none else adjacency.min_adjacency }} {{ adjacency.max_adjacency }}",
"result": {
"processes": {
"{{ pid }}": {
"adjacency": {
"min_adjacency": "{{ min|int }}",
"max_adjacency": "{{ max|int }}",
- "none": "{{ True if none_adj is defined else None }}",
+ "none": "{{ True if none_adj is defined else False }}",
},
},
},
@@ -559,11 +189,12 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "address_family",
"getval": re.compile(
- r"""\s+topology
- \s(?P<base>base)*
- \s*(?P<name>\S+)*
- \s*(?P<tid>tid\s\d+)
- *$""",
+ r"""
+ \stopology
+ (\s(?P<base>base))?
+ (\s(?P<name>\S+))?
+ (\stid\s(?P<tid>\S+))?
+ $""",
re.VERBOSE,
),
"setval": _tmplt_ospf_address_family_cmd,
@@ -574,7 +205,7 @@ class Ospfv2Template(NetworkTemplate):
"topology": {
"base": "{{ True if base is defined }}",
"name": "{{ name }}",
- "tid": "{{ tid.split(" ")[1] }}",
+ "tid": "{{ tid }}",
},
},
},
@@ -582,17 +213,18 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "area.authentication",
+ "name": "authentication",
"getval": re.compile(
- r"""\s+area
- \s(?P<area_id>\S+)*
- \s*(?P<auth>authentication)*
- \s*(?P<md>message-digest)
- *$""",
+ r"""
+ \sarea
+ (\s(?P<area_id>\S+))?
+ (\s(?P<auth>authentication))?
+ (\s(?P<md>message-digest))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_area_authentication,
- "compval": "authentication",
+ "setval": "area {{ area_id }} authentication"
+ "{{ ' message-digest' if authentication.message_digest else '' }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -610,17 +242,17 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "area.capability",
+ "name": "capability",
"getval": re.compile(
- r"""\s+area
- \s(?P<area_id>\S+)*
- \s*(?P<capability>capability)*
- \s*(?P<df>default-exclusion)
- *$""",
+ r"""
+ \sarea
+ (\s(?P<area_id>\S+))?
+ (\s(?P<capability>capability))?
+ \sdefault-exclusion
+ $""",
re.VERBOSE,
),
"setval": "area {{ area_id }} capability default-exclusion",
- "compval": "capability",
"result": {
"processes": {
"{{ pid }}": {
@@ -635,17 +267,17 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "area.default_cost",
+ "name": "default_cost",
"getval": re.compile(
- r"""\s+area
- \s(?P<area_id>\S+)*
- \sdefault-cost*
- \s*(?P<default_cost>\S+)
- *$""",
+ r"""
+ \sarea
+ (\s(?P<area_id>\S+))?
+ \sdefault-cost
+ (\s(?P<default_cost>\S+))?
+ $""",
re.VERBOSE,
),
"setval": "area {{ area_id }} default-cost {{ default_cost }}",
- "compval": "default_cost",
"result": {
"processes": {
"{{ pid }}": {
@@ -660,25 +292,30 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "area.filter_list",
+ "name": "filter_list",
"getval": re.compile(
- r"""\s+area
- \s*(?P<area_id>\S+)*
- \s*filter-list\sprefix*
- \s*(?P<name>\S+)*
- \s*(?P<dir>\S+)
- *$""",
+ r"""
+ \s+area
+ (\s(?P<area_id>\S+))?
+ \sfilter-list\sprefix
+ (\s(?P<name>\S+))?
+ (\s(?P<dir>\S+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_area_filter,
- "compval": "filter_list",
+ "setval": "area {{ area_id }}" " filter-list prefix {{ name }} {{ direction }}",
"result": {
"processes": {
"{{ pid }}": {
"areas": {
"{{ area_id }}": {
"area_id": "{{ area_id }}",
- "filter_list": [{"name": "{{ name }}", "direction": "{{ dir }}"}],
+ "filter_list": [
+ {
+ "name": "{{ name }}",
+ "direction": "{{ dir }}",
+ },
+ ],
},
},
},
@@ -686,20 +323,23 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "area.nssa",
+ "name": "nssa",
"getval": re.compile(
- r"""\s+area\s(?P<area_id>\S+)
- \s(?P<nssa>nssa)*
- \s*(?P<no_redis>no-redistribution)*
- \s*(?P<def_origin>default-information-originate)*
- \s*(?P<metric>metric\s\d+)*
- \s*(?P<metric_type>metric-type\s\d+)*
- \s*(?P<no_summary>no-summary)*
- \s*(?P<no_ext>no-ext-capability)*$""",
+ r"""
+ \sarea
+ (\s(?P<area_id>\S+))?
+ (\s(?P<nssa>nssa))?
+ (\s(?P<no_redis>no-redistribution))?
+ (\s(?P<def_origin>default-information-originate))?
+ (\smetric\s(?P<metric>\d+))?
+ (\smetric-type\s(?P<metric_type>\d+))?
+ (\s(?P<no_summary>no-summary))?
+ (\s(?P<nssa_only>nssa-only))?
+ (\s(?P<no_ext>no-ext-capability))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_area_nssa_translate,
- "compval": "nssa",
+ "setval": _tmplt_ospf_area_nssa,
"result": {
"processes": {
"{{ pid }}": {
@@ -707,13 +347,11 @@ class Ospfv2Template(NetworkTemplate):
"{{ area_id }}": {
"area_id": "{{ area_id }}",
"nssa": {
- "set": "{{ True if nssa is defined and def_origin is undefined and "
+ "set": "{{ True if def_origin is undefined and "
"no_ext is undefined and no_redis is undefined and nssa_only is undefined }}",
"default_information_originate": {
- "set": "{{ True if def_origin is defined and metric is undefined and "
- "metric_type is undefined and nssa_only is undefined }}",
- "metric": "{{ metric.split(" ")[1]|int }}",
- "metric_type": "{{ metric_type.split(" ")[1]|int }}",
+ "metric": "{{ metric|int }}",
+ "metric_type": "{{ metric_type|int }}",
"nssa_only": "{{ True if nssa_only is defined }}",
},
"no_ext_capability": "{{ True if no_ext is defined }}",
@@ -727,19 +365,19 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "area.nssa.translate",
+ "name": "nssa.translate",
"getval": re.compile(
- r"""\s+area*
- \s*(?P<area_id>\S+)*
- \s*(?P<nssa>nssa)*
- \stranslate\stype7*
- \s(?P<translate_always>always)*
- \s* (?P<translate_supress>suppress-fa)
- *$""",
+ r"""
+ \sarea
+ (\s(?P<area_id>\S+))?
+ \snssa
+ \stranslate\stype7
+ (\s(?P<translate_always>always|suppress-fa))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_area_nssa,
- "compval": "nssa.translate",
+ "setval": "area {{ area_id }} nssa "
+ "translate type7 {{ nssa.translate if nssa.translate is defined }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -747,7 +385,7 @@ class Ospfv2Template(NetworkTemplate):
"{{ area_id }}": {
"area_id": "{{ area_id }}",
"nssa": {
- "translate": "{{ translate_always if translate_always is defined else translate_supress if translate_supress is defined }}",
+ "translate": "{{ translate_always }}",
},
},
},
@@ -756,19 +394,24 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "area.ranges",
+ "name": "ranges",
"getval": re.compile(
- r"""\s+area\s(?P<area_id>\S+)
- \srange
- \s(?P<address>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
- \s(?P<netmask>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*((?P<advertise>advertise)|(?P<not_advertise>not-advertise))*
- \s*(?P<cost>cost\s\d+)
- *$""",
+ r"""
+ \sarea
+ (\s(?P<area_id>\S+))
+ \srange
+ (\s(?P<address>\S+))
+ (\s(?P<netmask>\S+))
+ (\s(?P<advertise>advertise))?
+ (\s(?P<not_advertise>not-advertise))?
+ (\s(cost\s(?P<cost>\d+)))
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_area_ranges,
- "compval": "ranges",
+ "setval": "area {{ area_id }} range {{ address }} {{ netmask }}"
+ "{{ (' advertise') if advertise is defined and advertise else '' }}"
+ "{{ (' not-advertise') if not_advertise is defined and not_advertise else '' }}"
+ "{{ (' cost ' + cost|string) if cost is defined else '' }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -780,7 +423,7 @@ class Ospfv2Template(NetworkTemplate):
"address": "{{ address }}",
"netmask": "{{ netmask }}",
"advertise": "{{ True if advertise is defined }}",
- "cost": "{{ cost.split(" ")[1]|int }}",
+ "cost": "{{ cost }}",
"not_advertise": "{{ True if not_advertise is defined }}",
},
],
@@ -791,19 +434,22 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "area.sham_link",
+ "name": "sham_link",
"getval": re.compile(
- r"""\s+area\s(?P<area_id>\S+)
- \ssham-link
- \s(?P<source>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
- \s(?P<destination>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*(?P<cost>cost\s\d+)*
- \s*(?P<ttl_security>ttl-security\shops\s\d+)
- *$""",
+ r"""
+ \sarea
+ (\s(?P<area_id>\S+))?
+ \ssham-link
+ (\s(?P<source>\S+))?
+ (\s(?P<destination>\S+))?
+ (\s(cost\s(?P<cost>\d+)))?
+ (\s(ttl-security\shops\s(?P<ttl_security>\d+)))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_area_sham_link,
- "compval": "sham_link",
+ "setval": "area {{ area_id }} sham-link {{ sham_link.source }} {{ sham_link.destination }}"
+ "{{ (' cost ' + sham_link.cost|string) if sham_link.cost is defined else '' }}"
+ "{{ (' ttl-security hops ' + sham_link.ttl_security|string) if sham_link.ttl_security is defined else '' }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -813,8 +459,8 @@ class Ospfv2Template(NetworkTemplate):
"sham_link": {
"source": "{{ source }}",
"destination": "{{ destination }}",
- "cost": "{{ cost.split(" ")[1]|int }}",
- "ttl_security": '{{ ttl_security.split("hops ")[1] }}',
+ "cost": "{{ cost }}",
+ "ttl_security": "{{ ttl_security }}",
},
},
},
@@ -823,17 +469,20 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "area.stub",
+ "name": "stub",
"getval": re.compile(
- r"""\s+area\s(?P<area_id>\S+)
- \s(?P<stub>stub)*
- \s*(?P<no_ext>no-ext-capability)*
- \s*(?P<no_sum>no-summary)
- *$""",
+ r"""
+ \sarea
+ (\s(?P<area_id>\S+))?
+ (\s(?P<stub>stub))?
+ (\s(?P<no_ext>no-ext-capability))?
+ (\s(?P<no_sum>no-summary))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_area_stub_link,
- "compval": "stub",
+ "setval": "area {{ area_id }} stub"
+ "{{ (' no-ext-capability') if stub.no_ext_capability else ''}}"
+ "{{ (' no-summary') if stub.no_summary else ''}}",
"result": {
"processes": {
"{{ pid }}": {
@@ -854,18 +503,20 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "auto_cost",
"getval": re.compile(
- r"""\s+(?P<auto_cost>auto-cost)*
- \s*(?P<ref_band>reference-bandwidth\s\d+)
- *$""",
+ r"""
+ (\s(?P<auto_cost>auto-cost))
+ (\sreference-bandwidth\s(?P<ref_band>\d+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_auto_cost,
+ "setval": "auto-cost"
+ "{{ ' reference-bandwidth ' + auto_cost.reference_bandwidth|string if auto_cost.reference_bandwidth is defined }}",
"result": {
"processes": {
"{{ pid }}": {
"auto_cost": {
- "set": "{{ True if auto_cost is defined and ref_band is undefined }}",
- "reference_bandwidth": '{{ ref_band.split(" ")[1] }}',
+ "set": True,
+ "reference_bandwidth": "{{ ref_band }}",
},
},
},
@@ -874,31 +525,90 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "bfd",
"getval": re.compile(
- r"""\s+bfd*
- \s*(?P<bfd>all-interfaces)
- *$""",
+ r"""
+ \sbfd
+ (\s(?P<bfd>all-interfaces))?
+ $""",
re.VERBOSE,
),
"setval": "bfd all-interfaces",
"result": {"processes": {"{{ pid }}": {"bfd": "{{ True if bfd is defined }}"}}},
},
{
- "name": "capability",
+ "name": "capability.lls",
"getval": re.compile(
- r"""\s+capability*
- \s*((?P<lls>lls)|(?P<opaque>opaque)|(?P<transit>transit)|(?P<vrf_lite>vrf-lite))
- *$""",
+ r"""
+ \scapability
+ (\s(?P<lls>lls))
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_capability,
+ "setval": "capability lls",
"result": {
"processes": {
"{{ pid }}": {
"capability": {
- "lls": "{{ True if lls is defined }}",
- "opaque": "{{ True if opaque is defined }}",
- "transit": "{{ True if transit is defined }}",
- "vrf_lite": "{{ True if vrf_lite is defined }}",
+ "lls": True,
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "capability.opaque",
+ "getval": re.compile(
+ r"""
+ \scapability
+ (\s(?P<opaque>opaque))
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "capability opaque",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "capability": {
+ "opaque": True,
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "capability.transit",
+ "getval": re.compile(
+ r"""
+ \scapability
+ (\s(?P<transit>transit))
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "capability transit",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "capability": {
+ "transit": True,
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "capability.vrf_lite",
+ "getval": re.compile(
+ r"""
+ \scapability
+ (\s(?P<vrf_lite>vrf-lite))
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "capability vrf-lite",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "capability": {
+ "vrf_lite": True,
},
},
},
@@ -907,19 +617,23 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "compatible",
"getval": re.compile(
- r"""\s+compatible*
- \s*((?P<rfc1583>rfc1583)|(?P<rfc1587>rfc1587)|(?P<rfc5243>rfc5243))
- *$""",
+ r"""
+ \scompatible
+ (\s(?P<rfc>rfc1583|rfc1587|rfc5243))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_compatible,
+ "setval": "compatible"
+ "{{ (' rfc1583') if compatible.rfc1583 else ''}}"
+ "{{ (' rfc1587') if compatible.rfc1587 else ''}}"
+ "{{ (' rfc5243') if compatible.rfc5243 else ''}}",
"result": {
"processes": {
"{{ pid }}": {
"compatible": {
- "rfc1583": "{{ True if rfc1583 is defined }}",
- "rfc1587": "{{ True if rfc1587 is defined }}",
- "rfc5243": "{{ True if rfc5243 is defined }}",
+ "rfc1583": "{{ True if 'rfc1583' in rfc else False }}",
+ "rfc1587": "{{ True if 'rfc1587' in rfc else False }}",
+ "rfc5243": "{{ True if 'rfc5243' in rfc else False }}",
},
},
},
@@ -928,25 +642,31 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "default_information",
"getval": re.compile(
- r"""\s+default-information*
- \s*(?P<originate>originate)*
- \s*(?P<always>always)*
- \s*(?P<metric>metric\s\d+)*
- \s*(?P<metric_type>metric-type\s\d+)*
- \s*(?P<route_map>route-map\s\S+)
- *$""",
+ r"""
+ \sdefault-information
+ (\s(?P<originate>originate))?
+ (\s(?P<always>always))?
+ (\smetric\s(?P<metric>\d+))?
+ (\smetric-type\s(?P<metric_type>\d+))?
+ (\sroute-map\s(?P<route_map>\S+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_default_information,
+ "setval": "default-information"
+ "{{ ' originate' if default_information.originate is defined else ''}}"
+ "{{ ' always' if default_information.always is defined else '' }}"
+ "{{ (' metric ' + default_information.metric|string) if default_information.metric is defined else '' }}"
+ "{{ (' metric-type ' + default_information.metric_type|string) if default_information.metric_type is defined else '' }}"
+ "{{ ' route-map ' + default_information.route_map if default_information.route_map is defined and default_information.metric is defined else '' }}",
"result": {
"processes": {
"{{ pid }}": {
"default_information": {
"originate": "{{ True if originate is defined }}",
"always": "{{ True if always is defined }}",
- "metric": "{{ metric.split(" ")[1]|int }}",
- "metric_type": "{{ metric_type.split(" ")[1]|int }}",
- "route_map": "{{ route_map.split(" ")[1] }}",
+ "metric": "{{ metric }}",
+ "metric_type": "{{ metric_type }}",
+ "route_map": "{{ route_map }}",
},
},
},
@@ -955,30 +675,35 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "default_metric",
"getval": re.compile(
- r"""\s+default-metric(?P<default_metric>\s\d+)
- *$""",
+ r"""
+ \sdefault-metric
+ \s(?P<default_metric>\d+)?
+ $""",
re.VERBOSE,
),
- "setval": "default-metric {{ default_metric }}",
- "result": {"processes": {"{{ pid }}": {"default_metric": "{{ default_metric| int}}"}}},
+ "setval": "default-metric {{ default_metric|string }}",
+ "result": {"processes": {"{{ pid }}": {"default_metric": "{{ default_metric }}"}}},
},
{
"name": "discard_route",
"getval": re.compile(
- r"""\s+(?P<discard_route>discard-route)*
- \s*(?P<external>external\s\d+)*
- \s*(?P<internal>internal\s\d+)
- *$""",
+ r"""
+ (\s(?P<discard_route>discard-route))
+ (\sexternal\s(?P<external>\d+))?
+ (\sinternal\s(?P<internal>\d+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_discard_route,
+ "setval": "discard-route"
+ "{{ ' external ' + discard_route.external|string if discard_route.external is defined else '' }}"
+ "{{ ' internal ' + discard_route.internal|string if discard_route.internal is defined else '' }}",
"result": {
"processes": {
"{{ pid }}": {
"discard_route": {
- "set": "{{ True if discard_route is defined and external is undefined and internal is undefined }}",
- "external": "{{ external.split(" ")[1]|int }}",
- "internal": "{{ internal.split(" ")[1]|int }}",
+ "set": True,
+ "external": "{{ external }}",
+ "internal": "{{ internal }}",
},
},
},
@@ -987,16 +712,18 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "distance.admin_distance",
"getval": re.compile(
- r"""\s+distance
- \s(?P<admin_dist>\S+)*
- \s*(?P<source>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*(?P<wildcard>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*(?P<acl>\S+)
- *$""",
+ r"""
+ \sdistance
+ (\s(?P<admin_dist>\S+))
+ (\s(?P<source>\S+))?
+ (\s(?P<wildcard>\S+))?
+ (\s(?P<acl>\S+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_distance_admin_distance,
- "compval": "admin_distance",
+ "setval": "distance {{ admin_distance.distance }} "
+ "{{ ( admin_distance.address + ' ' + admin_distance.wildcard_bits ) if admin_distance.address is defined else '' }}"
+ "{{ ' ' + admin_distance.acl if admin_distance.acl is defined else '' }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -1015,24 +742,26 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "distance.ospf",
"getval": re.compile(
- r"""\s+distance
- \sospf*
- \s*(?P<intra>intra-area\s\d+)*
- \s*(?P<inter>inter-area\s\d+)*
- \s*(?P<external>external\s\d+)
- *$""",
+ r"""
+ \sdistance\sospf
+ (\sintra-area\s(?P<intra>\d+))
+ (\sinter-area\s(?P<inter>\d+))
+ (\sexternal\s(?P<external>\d+))
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_distance_ospf,
- "compval": "ospf",
+ "setval": "distance ospf"
+ "{{ ' inter-area ' + distance.ospf.inter_area|string if distance.ospf.inter_area is defined else '' }}"
+ "{{ ' intra-area ' + distance.ospf.intra_area|string if distance.ospf.intra_area is defined else '' }}"
+ "{{ ' external ' + distance.ospf.external|string if distance.ospf.external is defined else '' }}",
"result": {
"processes": {
"{{ pid }}": {
"distance": {
"ospf": {
- "inter_area": "{{ inter.split(" ")[1]|int }}",
- "intra_area": "{{ intra.split(" ")[1]|int }}",
- "external": "{{ external.split(" ")[1]|int }}",
+ "inter_area": "{{ inter|int }}",
+ "intra_area": "{{ intra|int }}",
+ "external": "{{ external|int }}",
},
},
},
@@ -1042,15 +771,15 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "distribute_list.acls",
"getval": re.compile(
- r"""\s+distribute-list
- \s(?P<name>\S+)*
- \s*(?P<dir>\S+)*
- \s*(?P<int_pro>\S+\s\d+)
- *$""",
+ r"""
+ \sdistribute-list
+ (\s(?P<name>\S+))
+ (\s(?P<dir>\S+))
+ (\s(?P<int_pro>\S+\s\d+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_distribute_list_acls,
- "compval": "distribute_list.acls",
+ "setval": "distribute-list {{ name }} {{ direction }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -1071,23 +800,27 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "distribute_list.prefix",
"getval": re.compile(
- r"""\s+distribute-list
- \s(?P<prefix>prefix\s\S+)*
- \s*(?P<gateway>gateway\s\S+)*
- \s*(?P<dir>\S+)*
- \s*(?P<int_pro>\S+\s\S+)
- *$""",
+ r"""
+ \sdistribute-list
+ (\sprefix\s(?P<prefix>\S+))
+ (\sgateway\s(?P<gateway>\S+))?
+ (\s(?P<dir>\S+))?
+ (\s(?P<int_pro>\S+\s\S+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_distribute_list_prefix,
- "compval": "distribute_list.prefix",
+ "setval": "distribute-list prefix {{ distribute_list.prefix.name }}"
+ "{{ ' gateway ' + distribute_list.prefix.gateway_name if distribute_list.prefix.gateway_name is defined else '' }}"
+ "{{ ' ' + distribute_list.prefix.direction if distribute_list.prefix.direction is defined else '' }}"
+ "{{ ' ' + distribute_list.prefix.interface if distribute_list.prefix.interface is defined else '' }}"
+ "{{ ' ' + distribute_list.prefix.protocol if distribute_list.prefix.protocol is defined else '' }}",
"result": {
"processes": {
"{{ pid }}": {
"distribute_list": {
"prefix": {
- "name": "{{ prefix.split(" ")[1] }}",
- "gateway_name": "{{ gateway.split(" ")[1] if prefix is defined }}",
+ "name": "{{ prefix }}",
+ "gateway_name": "{{ gateway }}",
"direction": "{{ dir if gateway is undefined }}",
"interface": '{{ int_pro if dir == "in" }}',
"protocol": '{{ int_pro if dir == "out" }}',
@@ -1100,18 +833,18 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "distribute_list.route_map",
"getval": re.compile(
- r"""\s+distribute-list
- \s(?P<route_map>route-map\s\S+)*
- \s*(?P<dir>\S+)
- *$""",
+ r"""
+ \sdistribute-list
+ (\sroute-map\s(?P<route_map>\S+))
+ (\s(?P<dir>\S+))
+ $""",
re.VERBOSE,
),
"setval": "distribute-list route-map {{ distribute_list.route_map.name }} in",
- "compval": "distribute_list.route_map",
"result": {
"processes": {
"{{ pid }}": {
- "distribute_list": {"route_map": {"name": "{{ route_map.split(" ")[1] }}"}},
+ "distribute_list": {"route_map": {"name": "{{ route_map }}"}},
},
},
},
@@ -1119,11 +852,12 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "domain_id",
"getval": re.compile(
- r"""\s+domain-id
- \s(?P<address>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*(?P<secondary>secondary)*
- \s*(?P<null>null)
- *$""",
+ r"""
+ \sdomain-id
+ (\s(?P<address>\S+))
+ (\s(?P<secondary>secondary))?
+ (\s(?P<null>null))?
+ $""",
re.VERBOSE,
),
"setval": _tmplt_ospf_domain_id,
@@ -1144,9 +878,10 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "domain_tag",
"getval": re.compile(
- r"""\s+domain-tag
- \s(?P<tag>\d+)
- *$""",
+ r"""
+ \sdomain-tag
+ (\s(?P<tag>\d+))
+ $""",
re.VERBOSE,
),
"setval": "domain-tag {{ domain_tag }}",
@@ -1155,14 +890,18 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "event_log",
"getval": re.compile(
- r"""\s+(?P<event_log>event-log)*
- \s*(?P<one_shot>one-shot)*
- \s*(?P<pause>pause)*
- \s*(?P<size>size\s\d+)
- *$""",
+ r"""
+ (\s(?P<event_log>event-log))?
+ (\s(?P<one_shot>one-shot))?
+ (\s(?P<pause>pause))?
+ (\ssize\s(?P<size>\d+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_event_log,
+ "setval": "event-log"
+ "{{ ' one-shot' if event_log.one_shot else '' }}"
+ "{{ ' pause' if event_log.pause else '' }}"
+ "{{ ' size ' + event_log.size|string if event_log.size is defined else '' }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -1170,7 +909,7 @@ class Ospfv2Template(NetworkTemplate):
"enable": "{{ True if event_log is defined and one_shot is undefined and pause is undefined and size is undefined }}",
"one_shot": "{{ True if one_shot is defined }}",
"pause": "{{ True if pause is defined }}",
- "size": "{{ size.split(" ")[1]|int }}",
+ "size": "{{ size }}",
},
},
},
@@ -1179,8 +918,9 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "help",
"getval": re.compile(
- r"""\s+(?P<help>help)
- *$""",
+ r"""
+ \s(?P<help>help)
+ $""",
re.VERBOSE,
),
"setval": "help",
@@ -1189,8 +929,9 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "ignore",
"getval": re.compile(
- r"""\s+(?P<ignore>ignore)
- *$""",
+ r"""
+ \s(?P<ignore>ignore)
+ $""",
re.VERBOSE,
),
"setval": "ignore lsa mospf",
@@ -1199,8 +940,9 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "interface_id",
"getval": re.compile(
- r"""\s+(?P<interface_id>interface-id\ssnmp-if-index)
- *$""",
+ r"""
+ (\s(?P<interface_id>interface-id\ssnmp-if-index))?
+ $""",
re.VERBOSE,
),
"setval": "interface-id snmp-if-index",
@@ -1213,8 +955,9 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "ispf",
"getval": re.compile(
- r"""\s+(?P<ispf>ispf)
- *$""",
+ r"""
+ \s(?P<ispf>ispf)
+ $""",
re.VERBOSE,
),
"setval": "ispf",
@@ -1223,24 +966,31 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "limit",
"getval": re.compile(
- r"""\s+limit\sretransmissions
- \s((?P<dc_num>dc\s\d+)|(?P<dc_disable>dc\sdisable))*
- \s*((?P<non_dc_num>non-dc\s\d+)|(?P<non_dc_disable>non-dc\sdisable))
- *$""",
+ r"""
+ \slimit\sretransmissions
+ (\sdc\s(?P<dc_num>\d+))?
+ (\sdc\sdisable(?P<dc_disable>))?
+ (\snon-dc\s(?P<non_dc_num>\d+))?
+ (\snon-dc\sdisable(?P<non_dc_disable>))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_limit,
+ "setval": "limit retransmissions"
+ "{{ ' dc ' + limit.dc.number|string if limit.dc.number is defined }}"
+ "{{ ' dc disable' if limit.dc.disable and limit.dc.number is not defined }}"
+ "{{ ' non-dc ' + limit.non_dc.number|string if limit.non_dc.number is defined }}"
+ "{{ ' non-dc disable' if limit.non_dc.disable and limit.non_dc.number is not defined }}",
"result": {
"processes": {
"{{ pid }}": {
"limit": {
"dc": {
- "number": "{{ dc_num.split(" ")[1]|int }}",
+ "number": "{{ dc_num|int }}",
"disable": "{{ True if dc_disable is defined }}",
},
"non_dc": {
- "number": "{{ non_dc_num.split(" ")[1]|int }}",
- "disable": "{{ True if dc_disable is defined }}",
+ "number": "{{ non_dc_num|int }}",
+ "disable": "{{ True if non_dc_disable is defined }}",
},
},
},
@@ -1250,14 +1000,18 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "local_rib_criteria",
"getval": re.compile(
- r"""\s+(?P<local>local-rib-criteria)*
- \s*(?P<forward>forwarding-address)*
- \s*(?P<inter>inter-area-summary)*
- \s*(?P<nssa>nssa-translation)
- *$""",
+ r"""
+ (\s(?P<local>local-rib-criteria))?
+ (\s(?P<forward>forwarding-address))?
+ (\s(?P<inter>inter-area-summary))?
+ (\s(?P<nssa>nssa-translation))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_vrf_local_rib_criteria,
+ "setval": "local-rib-criteria"
+ "{{ ' forwarding-address' if local_rib_criteria.forwarding_address else '' }}"
+ "{{ ' inter-area-summary' if local_rib_criteria.inter_area_summary else '' }}"
+ "{{ ' nssa-translation' if local_rib_criteria.nssa_translation else '' }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -1274,12 +1028,14 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "log_adjacency_changes",
"getval": re.compile(
- r"""\s+(?P<log>log-adjacency-changes)*
- \s*(?P<detail>detail)
- *$""",
+ r"""
+ (\s(?P<log>log-adjacency-changes))?
+ (\s(?P<detail>detail))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_log_adjacency_changes,
+ "setval": "log-adjacency-changes"
+ "{{ ' detail' if log_adjacency_changes.detail else '' }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -1294,25 +1050,31 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "max_lsa",
"getval": re.compile(
- r"""\s+max-lsa
- \s(?P<number>\d+)*
- \s*(?P<threshold>\d+)*
- \s*(?P<ignore_count>ignore-count\s\d+)*
- \s*(?P<ignore_time>ignore-time\s\d+)*
- \s*(?P<reset_time>reset-time\s\d+)
- *$""",
+ r"""\smax-lsa
+ (\s(?P<number>\d+))?
+ (\s(?P<threshold>\d+))?
+ (\s(?P<warning>warning-only))?
+ (\signore-count\s(?P<ignore_count>\d+))?
+ (\signore-time\s(?P<ignore_time>\d+))?
+ (\sreset-time\s(?P<reset_time>\d+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_max_lsa,
+ "setval": "max-lsa {{ max_lsa.number|string }}"
+ "{{ ' ' + max_lsa.threshold_value|string if max_lsa.threshold_value is defined else '' }}"
+ "{{ ' warning-only' if max_lsa.warning_only else '' }}"
+ "{{ ' ignore-count ' + max_lsa.ignore_count|string if max_lsa.ignore_count is defined and not max_lsa.warning_only else '' }}"
+ "{{ ' ignore-time ' + max_lsa.ignore_time|string if max_lsa.ignore_time is defined and not max_lsa.warning_only else '' }}"
+ "{{ ' reset-time ' + max_lsa.reset_time|string if max_lsa.reset_time is defined and not max_lsa.warning_only else '' }}",
"result": {
"processes": {
"{{ pid }}": {
"max_lsa": {
"number": "{{ number }}",
"threshold_value": "{{ threshold }}",
- "ignore_count": "{{ ignore_count.split(" ")[1] }}",
- "ignore_time": "{{ ignore_time.split(" ")[1] }}",
- "reset_time": "{{ reset_time.split(" ")[1] }}",
+ "ignore_count": "{{ ignore_count }}",
+ "ignore_time": "{{ ignore_time }}",
+ "reset_time": "{{ reset_time }}",
"warning_only": "{{ True if warning is defined }}",
},
},
@@ -1322,14 +1084,15 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "max_metric",
"getval": re.compile(
- r"""\s+max-metric*
- \s*(?P<router_lsa>router-lsa)*
- \s*(?P<include_stub>include-stub)*
- \s*(?P<external_lsa>external-lsa\s\d+)*
- \s*(?P<startup_time>on-startup\s\d+)*
- \s*(?P<startup_wait>on-startup\s\S+)*
- \s*(?P<summary_lsa>summary-lsa\s\d+)
- *$""",
+ r"""
+ \smax-metric
+ (\s(?P<router_lsa>router-lsa))?
+ (\s(?P<include_stub>include-stub))?
+ (\sexternal-lsa\s(?P<external_lsa>\d+))?
+ (\son-startup\s(?P<startup_time>\d+))?
+ (\son-startup\s(?P<startup_wait>\S+))?
+ (\ssummary-lsa\s(?P<summary_lsa>\d+))?
+ $""",
re.VERBOSE,
),
"setval": _tmplt_ospf_max_metric,
@@ -1338,13 +1101,13 @@ class Ospfv2Template(NetworkTemplate):
"{{ pid }}": {
"max_metric": {
"router_lsa": "{{ True if router_lsa is defined }}",
- "external_lsa": "{{ external_lsa.split(" ")[1] }}",
- "include_stub": "{{ ignore_count.split(" ")[1] }}",
+ "external_lsa": "{{ external_lsa }}",
+ "include_stub": "{{ ignore_count }}",
"on_startup": {
- "time": "{{ startup_time.split(" ")[1] }}",
+ "time": "{{ startup_time }}",
"wait_for_bgp": "{{ True if startup_wait is defined }}",
},
- "summary_lsa": "{{ summary_lsa.split(" ")[1] }}",
+ "summary_lsa": "{{ summary_lsa }}",
},
},
},
@@ -1353,26 +1116,27 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "maximum_paths",
"getval": re.compile(
- r"""\s+maximum-paths*
- \s+(?P<paths>\d+)
- *$""",
+ r"""
+ \smaximum-paths
+ \s(?P<paths>\d+)
+ $""",
re.VERBOSE,
),
- "setval": "maximum-paths {{ maximum_paths }}",
+ "setval": "maximum-paths {{ maximum_paths|string }}",
"result": {"processes": {"{{ pid }}": {"maximum_paths": "{{ paths }}"}}},
},
{
- "name": "mpls.ldp",
+ "name": "mpls.ldp.autoconfig",
"getval": re.compile(
- r"""\s+mpls
- \sldp*
- \s*(?P<autoconfig>autoconfig*\s*(?P<area>area\s\S+))*
- \s*(?P<sync>sync)
- *$""",
+ r"""
+ \smpls\sldp
+ (\s(?P<autoconfig>autoconfig))
+ (\sarea\s(?P<area>\S+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_mpls_ldp,
- "compval": "ldp",
+ "setval": "mpls ldp autoconfig"
+ "{{ ' area ' + mpls.ldp.autoconfig.area if mpls.ldp.autoconfig.area is defined }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -1380,9 +1144,30 @@ class Ospfv2Template(NetworkTemplate):
"ldp": {
"autoconfig": {
"set": "{{ True if autoconfig is defined and area is undefined }}",
- "area": "{{ area.split(" ")[1] }}",
+ "area": "{{ area }}",
},
- "sync": "{{ True if sync is defined }}",
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "mpls.ldp.sync",
+ "getval": re.compile(
+ r"""
+ \smpls\sldp
+ (\s(?P<sync>sync))
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "mpls ldp sync",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "mpls": {
+ "ldp": {
+ "sync": True,
},
},
},
@@ -1404,7 +1189,6 @@ class Ospfv2Template(NetworkTemplate):
re.VERBOSE,
),
"setval": _tmplt_ospf_mpls_traffic_eng,
- "compval": "traffic_eng",
"result": {
"processes": {
"{{ pid }}": {
@@ -1432,13 +1216,14 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "neighbor",
"getval": re.compile(
- r"""\s+neighbor
- \s(?P<address>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*(?P<cost>cost\s\d+)*
- \s*(?P<db_filter>database-filter\sall\sout)*
- \s*(?P<poll>poll-interval\s\d+)*
- \s*(?P<priority>priority\s\d+)
- *$""",
+ r"""
+ \sneighbor
+ (\s(?P<address>\S+))
+ (\scost\s(?P<cost>\d+))
+ (\sdatabase-filter\sall\sout\s(?P<db_filter>))?
+ (\spoll-interval\s(?P<poll>\d+))?
+ (\spriority\s(?P<priority>\d+))?
+ $""",
re.VERBOSE,
),
"setval": _tmplt_ospf_neighbor,
@@ -1447,10 +1232,10 @@ class Ospfv2Template(NetworkTemplate):
"{{ pid }}": {
"neighbor": {
"address": "{{ address }}",
- "cost": "{{ cost.split(" ")[1] }}",
+ "cost": "{{ cost }}",
"database_filter": "{{ True if db_filter is defined }}",
- "poll_interval": "{{ poll.split(" ")[1] }}",
- "priority": "{{ priority.split(" ")[1] }}",
+ "poll_interval": "{{ poll }}",
+ "priority": "{{ priority }}",
},
},
},
@@ -1459,14 +1244,17 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "network",
"getval": re.compile(
- r"""\s+network
- \s(?P<address>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*(?P<wildcard>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*(?P<area>area\s\S+)
- *$""",
+ r"""
+ \snetwork
+ (\s(?P<address>\S+))?
+ (\s(?P<wildcard>\S+))?
+ (\sarea\s(?P<area>\S+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_network,
+ "setval": "network"
+ "{{ (' ' + address + ' ' + wildcard_bits) if address is defined }}"
+ "{{ ' area ' + area if area is defined }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -1474,7 +1262,7 @@ class Ospfv2Template(NetworkTemplate):
{
"address": "{{ address }}",
"wildcard_bits": "{{ wildcard }}",
- "area": "{{ area.split(" ")[1] }}",
+ "area": "{{ area }}",
},
],
},
@@ -1484,15 +1272,15 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "nsf.cisco",
"getval": re.compile(
- r"""\s+nsf
- \s(?P<cisco>cisco)*
- \s*(?P<helper>helper)*
- \s*(?P<disable>disable)
- *$""",
+ r"""
+ \snsf
+ (\s(?P<cisco>cisco))
+ (\s(?P<helper>helper))?
+ (\s(?P<disable>disable))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_nsf_cisco,
- "compval": "cisco",
+ "setval": "nsf cisco helper" "{{ ' disable' if nsf.cisco.disable }}",
"result": {
"processes": {
"{{ pid }}": {
@@ -1507,26 +1295,24 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "nsf.ietf",
+ "name": "nsf.ietf.disable",
"getval": re.compile(
- r"""\s+nsf
- \s(?P<ietf>ietf)*
- \s*(?P<helper>helper)*
- \s*(?P<disable>disable)*
- \s*(?P<strict>strict-lsa-checking)
- *$""",
+ r"""
+ \snsf
+ (\s(?P<ietf>ietf))
+ (\s(?P<helper>helper))
+ (\s(?P<disable>disable))
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_nsf_ietf,
- "compval": "ietf",
+ "setval": "nsf ietf helper disable",
"result": {
"processes": {
"{{ pid }}": {
"nsf": {
"ietf": {
- "helper": "{{ True if helper is defined }}",
- "disable": "{{ True if disable is defined }}",
- "strict_lsa_checking": "{{ True if strict is defined }}",
+ "helper": True,
+ "disable": True,
},
},
},
@@ -1534,23 +1320,24 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "passive_interfaces",
+ "name": "nsf.ietf.strict_lsa_checking",
"getval": re.compile(
- r"""\s*(?P<no>no)*
- \s*passive-interface*
- \s*(?P<interface>\S+\s\S+|\S+)
- *$""",
+ r"""
+ \snsf
+ (\s(?P<ietf>ietf))
+ (\s(?P<helper>helper))
+ (\s(?P<strict>strict-lsa-checking))
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_passive_interfaces,
+ "setval": "nsf ietf helper strict-lsa-checking",
"result": {
"processes": {
"{{ pid }}": {
- "passive_interfaces": {
- "default": "{{ True if 'default' in interface }}",
- "interface": {
- "set_interface": "{% if no is defined %}{{ False }}{% elif 'default' not in interface %}{{ True }}{% endif %}",
- "name": ["{{ interface if 'default' not in interface }}"],
+ "nsf": {
+ "ietf": {
+ "helper": "{{ True }}",
+ "strict_lsa_checking": True,
},
},
},
@@ -1558,21 +1345,55 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "passive_interface",
+ "name": "passive_interfaces.default",
"getval": re.compile(
- r"""\s+passive-interface
- \s(?P<interface>\S+\s\S+)
- *$""",
+ r"""
+ \spassive-interface
+ \s(?P<default_value>default)
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "passive-interface" "{{ ' default' if passive_interfaces.default }}",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "passive_interfaces": {
+ "default": "{{ True if default_value is defined }}",
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "passive_interfaces.interface",
+ "getval": re.compile(
+ r"""
+ (\s(?P<no>no))?
+ \spassive-interface
+ \s(?P<interface>\S+)
+ $""",
re.VERBOSE,
),
- "setval": "passive-interface {{ passive_interface }}",
- "result": {"processes": {"{{ pid }}": {"passive_interface": "{{ interface }}"}}},
+ "setval": _tmplt_ospf_passive_interfaces,
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "passive_interfaces": {
+ "interface": {
+ "set_interface": "{{ not no }}",
+ "name": ["{{ interface if 'default' not in interface }}"],
+ },
+ },
+ },
+ },
+ },
},
{
"name": "prefix_suppression",
"getval": re.compile(
- r"""\s+(?P<prefix_sup>prefix-suppression)
- *$""",
+ r"""
+ \s(?P<prefix_sup>prefix-suppression)
+ $""",
re.VERBOSE,
),
"setval": "prefix-suppression",
@@ -1585,33 +1406,31 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "priority",
"getval": re.compile(
- r"""\s+priority
- \s(?P<priority>\d+)
- *$""",
+ r"""
+ \spriority
+ \s(?P<priority>\d+)
+ $""",
re.VERBOSE,
),
"setval": "priority {{ priority }}",
"result": {"processes": {"{{ pid }}": {"priority": "{{ priority }}"}}},
},
{
- "name": "queue_depth.hello",
+ "name": "queue_depth.hello.max_packets",
"getval": re.compile(
- r"""\s+queue-depth
- \shello*
- \s*(?P<max_packets>\d+)*
- \s*(?P<unlimited>unlimited)
- *$""",
+ r"""
+ \squeue-depth\shello
+ (\s(?P<max_packets>\d+))
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_queue_depth_hello,
- "compval": "hello",
+ "setval": "queue-depth hello " "{{ queue_depth.hello.max_packets|string }}",
"result": {
"processes": {
"{{ pid }}": {
"queue_depth": {
"hello": {
"max_packets": "{{ max_packets }}",
- "unlimited": "{{ True if unlimited is defined }}",
},
},
},
@@ -1619,24 +1438,65 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "queue_depth.update",
+ "name": "queue_depth.hello.unlimited",
"getval": re.compile(
- r"""\s+queue-depth
- \supdate*
- \s*(?P<max_packets>\d+)*
- \s*(?P<unlimited>unlimited)
- *$""",
+ r"""
+ \squeue-depth\shello
+ (\s(?P<unlimited>unlimited))
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_queue_depth_update,
- "compval": "update",
+ "setval": "queue-depth hello unlimited",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "queue_depth": {
+ "hello": {
+ "unlimited": True,
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "queue_depth.update.max_packets",
+ "getval": re.compile(
+ r"""
+ \squeue-depth\supdate
+ (\s(?P<max_packets>\d+))?
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "queue-depth update " "{{ queue_depth['update'].max_packets|string }}",
"result": {
"processes": {
"{{ pid }}": {
"queue_depth": {
"update": {
"max_packets": "{{ max_packets }}",
- "unlimited": "{{ True if unlimited is defined }}",
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "queue_depth.update.unlimited",
+ "getval": re.compile(
+ r"""
+ \squeue-depth\supdate
+ (\s(?P<unlimited>unlimited))
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "queue-depth update unlimited",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "queue_depth": {
+ "update": {
+ "unlimited": True,
},
},
},
@@ -1646,9 +1506,10 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "router_id",
"getval": re.compile(
- r"""\s+router-id
- \s(?P<id>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
- *$""",
+ r"""
+ \srouter-id
+ (\s(?P<id>\S+))?
+ $""",
re.VERBOSE,
),
"setval": "router-id {{ router_id }}",
@@ -1657,8 +1518,9 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "shutdown",
"getval": re.compile(
- r"""\s+(?P<shutdown>shutdown)
- *$""",
+ r"""
+ \s(?P<shutdown>shutdown)
+ $""",
re.VERBOSE,
),
"setval": "shutdown",
@@ -1667,27 +1529,53 @@ class Ospfv2Template(NetworkTemplate):
},
},
{
- "name": "summary_address",
+ "name": "summary_address.not_advertise",
"getval": re.compile(
- r"""\s+summary-address
- \s(?P<address>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*(?P<mask>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*
- \s*(?P<not_adv>not-advertise)*
- \s*(?P<nssa>nssa-only)*
- \s*(?P<tag>tag\s\d+)
- *$""",
+ r"""
+ \ssummary-address
+ (\s(?P<address>\S+))
+ (\s(?P<mask>\S+))
+ (\s(?P<not_adv>not-advertise))
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_summary_address,
+ "setval": "summary-address "
+ "{{ summary_address.address + ' ' + summary_address.mask }} not-advertise",
"result": {
"processes": {
"{{ pid }}": {
"summary_address": {
"address": "{{ address }}",
"mask": "{{ mask }}",
- "not_advertise": "{{ True if not_adv is defined }}",
- "nssa_only": "{{ True if nssa is defined }}",
- "tag": "{{ tag.split(" ")[1] }}",
+ "not_advertise": True,
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "summary_address.nssa_only",
+ "getval": re.compile(
+ r"""
+ \ssummary-address
+ (\s(?P<address>\S+))
+ (\s(?P<mask>\S+))
+ (\s(?P<nssa>nssa-only))
+ (\stag\s(?P<tag>\d+))?
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "summary-address "
+ "{{ summary_address.address + ' ' + summary_address.mask }} nssa-only"
+ "{{ ' tag ' + summary_address.tag|string if summary_address.tag is defined else '' }}",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "summary_address": {
+ "address": "{{ address }}",
+ "mask": "{{ mask }}",
+ "nssa_only": True,
+ "tag": "{{ tag }}",
},
},
},
@@ -1696,38 +1584,80 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "timers.lsa",
"getval": re.compile(
- r"""\s+timers
- \slsa
- \sarrival
- \s(?P<lsa>\d+)
- *$""",
+ r"""
+ \stimers
+ \slsa
+ \sarrival
+ (\s(?P<lsa>\d+))?
+ $""",
re.VERBOSE,
),
"setval": "timers lsa arrival {{ timers.lsa }}",
- "compval": "lsa",
"result": {"processes": {"{{ pid }}": {"timers": {"lsa": "{{ lsa }}"}}}},
},
{
- "name": "timers.pacing",
+ "name": "timers.pacing.flood",
"getval": re.compile(
- r"""\s+timers
- \spacing
- \s(?P<flood>flood\s\d+)*
- \s*(?P<lsa_group>lsa-group\s\d+)*
- \s*(?P<retransmission>retransmission\s\d+)
- *$""",
+ r"""
+ \stimers\spacing
+ (\sflood\s(?P<flood>\d+))
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "timers pacing"
+ "{{ ' flood ' + timers.pacing.flood|string if timers.pacing.flood is defined else '' }}",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "timers": {
+ "pacing": {
+ "flood": "{{ flood }}",
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "timers.pacing.lsa_group",
+ "getval": re.compile(
+ r"""
+ \stimers\spacing
+ (\slsa-group\s(?P<lsa_group>\d+))
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_timers_pacing,
- "compval": "pacing",
+ "setval": "timers pacing"
+ "{{ ' lsa-group ' + timers.pacing.lsa_group|string if timers.pacing.lsa_group is defined else '' }}",
"result": {
"processes": {
"{{ pid }}": {
"timers": {
"pacing": {
- "flood": "{{ flood.split(" ")[1] }}",
- "lsa_group": "{{ lsa_group.split(" ")[1] }}",
- "retransmission": "{{ retransmission.split(" ")[1] }}",
+ "lsa_group": "{{ lsa_group }}",
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "timers.pacing.retransmission",
+ "getval": re.compile(
+ r"""
+ \stimers\spacing
+ (\sretransmission\s(?P<retransmission>\d+))?
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "timers pacing"
+ "{{ ' retransmission ' + timers.pacing.retransmission|string if timers.pacing.retransmission is defined else '' }}",
+ "result": {
+ "processes": {
+ "{{ pid }}": {
+ "timers": {
+ "pacing": {
+ "retransmission": "{{ retransmission }}",
},
},
},
@@ -1737,17 +1667,16 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "timers.throttle.lsa",
"getval": re.compile(
- r"""\s+timers
- \sthrottle
- \s*(?P<lsa>lsa)*
- \s*(?P<first_delay>\d+)*
- \s*(?P<min_delay>\d+)*
- \s*(?P<max_delay>\d+)
- *$""",
+ r"""
+ \stimers\sthrottle
+ (\s(?P<lsa>lsa))?
+ (\s(?P<first_delay>\d+))?
+ (\s(?P<min_delay>\d+))?
+ (\s(?P<max_delay>\d+))?
+ $""",
re.VERBOSE,
),
"setval": "timers throttle lsa {{ throttle.lsa.first_delay }} {{ throttle.lsa.min_delay }} {{ throttle.lsa.max_delay }}",
- "compval": "throttle.lsa",
"result": {
"processes": {
"{{ pid }}": {
@@ -1767,17 +1696,16 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "timers.throttle.spf",
"getval": re.compile(
- r"""\s+timers
- \sthrottle
- \s*(?P<spf>spf)*
- \s*(?P<first_delay>\d+)*
- \s*(?P<min_delay>\d+)*
- \s*(?P<max_delay>\d+)
- *$""",
+ r"""
+ \stimers\sthrottle
+ (\s(?P<spf>spf))?
+ (\s(?P<first_delay>\d+))?
+ (\s(?P<min_delay>\d+))?
+ (\s(?P<max_delay>\d+))?
+ $""",
re.VERBOSE,
),
"setval": "timers throttle spf {{ throttle.spf.receive_delay }} {{ throttle.spf.between_delay }} {{ throttle.spf.max_delay }}",
- "compval": "throttle.spf",
"result": {
"processes": {
"{{ pid }}": {
@@ -1797,8 +1725,9 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "traffic_share",
"getval": re.compile(
- r"""\s+(?P<traffic>traffic-share\smin\sacross-interfaces)
- *$""",
+ r"""
+ \s(?P<traffic>traffic-share\smin\sacross-interfaces)
+ $""",
re.VERBOSE,
),
"setval": "traffic-share min across-interfaces",
@@ -1809,19 +1738,21 @@ class Ospfv2Template(NetworkTemplate):
{
"name": "ttl_security",
"getval": re.compile(
- r"""\s+ttl-security
- \s(?P<interfaces>all-interfaces)*
- \s*(?P<hops>hops\s\d+)
- *$""",
+ r"""
+ \sttl-security
+ (\s(?P<interfaces>all-interfaces))?
+ (\shops\s(?P<hops>\d+))?
+ $""",
re.VERBOSE,
),
- "setval": _tmplt_ospf_ttl_security,
+ "setval": "ttl-security all-interfaces"
+ "{{ ' hops ' + ttl_security.hops|string if ttl_security.hops is defined }}",
"result": {
"processes": {
"{{ pid }}": {
"ttl_security": {
"set": "{{ True if interfaces is defined and hops is undefined }}",
- "hops": "{{ hops.split(" ")[1] }}",
+ "hops": "{{ hops }}",
},
},
},
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv3.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv3.py
index 874eed614..1dbe0fc94 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv3.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv3.py
@@ -81,11 +81,11 @@ def _tmplt_ospf_area_nssa(config_data):
command += " default-information-originate"
if "metric" in config_data["nssa"]["default_information_originate"]:
command += " metric {metric}".format(
- **config_data["nssa"]["default_information_originate"]
+ **config_data["nssa"]["default_information_originate"],
)
if "metric_type" in config_data["nssa"]["default_information_originate"]:
command += " metric-type {metric_type}".format(
- **config_data["nssa"]["default_information_originate"]
+ **config_data["nssa"]["default_information_originate"],
)
if "nssa_only" in config_data["nssa"]["default_information_originate"]:
command += " nssa-only"
@@ -150,7 +150,7 @@ def _tmplt_ospf_auto_cost(config_data):
command = "auto-cost"
if "reference_bandwidth" in config_data["auto_cost"]:
command += " reference-bandwidth {reference_bandwidth}".format(
- **config_data["auto_cost"]
+ **config_data["auto_cost"],
)
return command
@@ -210,7 +210,7 @@ def _tmplt_ospf_distance_admin_distance(config_data):
command = "distance {distance}".format(**config_data["distance"]["admin_distance"])
if "address" in config_data["distance"]["admin_distance"]:
command += " {address} {wildcard_bits}".format(
- **config_data["distance"]["admin_distance"]
+ **config_data["distance"]["admin_distance"],
)
if "acl" in config_data["distance"]["admin_distance"]:
command += " {acl}".format(**config_data["distance"]["admin_distance"])
@@ -395,17 +395,17 @@ def _tmplt_ospf_mpls_traffic_eng(config_data):
command += " area {area}".format(**config_data["mpls"]["traffic_eng"])
elif "autoroute_exclude" in config_data["mpls"]["traffic_eng"]:
command += " autoroute-exclude prefix-list {autoroute_exclude}".format(
- **config_data["mpls"]["traffic_eng"]
+ **config_data["mpls"]["traffic_eng"],
)
elif "interface" in config_data["mpls"]["traffic_eng"]:
command += " interface {int_type}".format(
- **config_data["mpls"]["traffic_eng"]["interface"]
+ **config_data["mpls"]["traffic_eng"]["interface"],
)
if "area" in config_data["mpls"]["traffic_eng"]["interface"]:
command += " area {area}".format(**config_data["mpls"]["traffic_eng"]["interface"])
elif "mesh_group" in config_data["mpls"]["traffic_eng"]:
command += " mesh-group {id} {interface}".format(
- **config_data["mpls"]["traffic_eng"]["mesh_group"]
+ **config_data["mpls"]["traffic_eng"]["mesh_group"],
)
if "area" in config_data["mpls"]["traffic_eng"]["mesh_group"]:
command += " area {area}".format(**config_data["mpls"]["traffic_eng"]["mesh_group"])
@@ -413,7 +413,7 @@ def _tmplt_ospf_mpls_traffic_eng(config_data):
command += " multicast-intact"
elif "router_id_interface" in config_data["mpls"]["traffic_eng"]:
command += " router-id {router_id_interface}".format(
- **config_data["mpls"]["traffic_eng"]
+ **config_data["mpls"]["traffic_eng"],
)
return command
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ping.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ping.py
index d7f375b71..1b7bde1ae 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ping.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ping.py
@@ -47,6 +47,7 @@ class PingTemplate(NetworkTemplate):
"{{ (' repeat ' + count|string ) if count is defined else '' }}"
"{{ (' df-bit' ) if df_bit|d(False) else '' }}"
"{{ (' timeout ' + timeout|string) if timeout is defined else '' }}"
+ "{{ (' size ' + size|string) if size is defined else '' }}"
"{{ (' ingress ' + ingress) if ingress is defined else '' }}"
"{{ (' egress ' + egress) if egress is defined else '' }}"
"{{ (' source ' + source) if source is defined else '' }}",
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/prefix_lists.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/prefix_lists.py
index 041d926f5..43d163c5d 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/prefix_lists.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/prefix_lists.py
@@ -22,66 +22,66 @@ from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.r
)
-def _tmplt_set_prefix_lists(config_data):
- if "prefix_list" in config_data:
- if config_data.get("afi") == "ipv4":
- config_data["afi"] = "ip"
- cmd = "{afi} prefix-list {name}".format(**config_data)
- if config_data.get("prefix_list"):
- if config_data["prefix_list"].get("description"):
- cmd += " description {description}".format(**config_data["prefix_list"])
- else:
- cmd += " seq {sequence} {action} {prefix}".format(**config_data["prefix_list"])
- if config_data["prefix_list"].get("ge"):
- cmd += " ge {ge}".format(**config_data["prefix_list"])
- if config_data["prefix_list"].get("le"):
- cmd += " le {le}".format(**config_data["prefix_list"])
- return cmd
-
-
class Prefix_listsTemplate(NetworkTemplate):
def __init__(self, lines=None):
super(Prefix_listsTemplate, self).__init__(lines=lines, tmplt=self)
PARSERS = [
{
- "name": "prefix_list",
+ "name": "entry",
"getval": re.compile(
r"""
- ^(?P<afi>ip|ipv6)*
- \s*prefix-list*
- \s*(?P<name>\S+)*
- \s*(?P<description>description\s\S.*)*
- \s*(?P<sequence>seq\s\S+)*
- \s*(?P<action>deny|permit)*
- \s*(?P<prefix>(?:[0-9]{1,3}\.){3}[0-9]{1,3}/\d+|(([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}/\d+))*
- \s*(?P<ge>ge\s\d+)*
- \s*(?P<le>le\s\d+)*
+ ^(?P<afi>ip|ipv6)\sprefix-list
+ (\s(?P<name>\S+))
+ (\sseq\s(?P<sequence>\d+))?
+ (\s(?P<action>deny|permit))?
+ (\s(?P<prefix>\S+))?
+ (\sge\s(?P<ge>\d+))?
+ (\sle\s(?P<le>\d+))?
$""",
re.VERBOSE,
),
- "setval": _tmplt_set_prefix_lists,
+ "setval": "{{ 'ip' if afi == 'ipv4' else afi }} prefix-list {{ name }}"
+ "{{ (' seq ' + sequence|string) if sequence|d('') else '' }}"
+ " {{ action }}"
+ " {{ prefix }}"
+ "{{ (' ge ' + ge|string) if ge|d('') else '' }}"
+ "{{ (' le ' + le|string) if le|d('') else '' }}",
+ "shared": True,
"result": {
- "{{ afi + '_' + name }}": {
+ "{{ afi + name }}": {
"afi": "{{ 'ipv4' if afi is defined and afi=='ip' else 'ipv6' }}",
- "prefix_lists": [
+ "name": "{{ name }}",
+ "entries": [
{
- "name": "{{ name if name is defined }}",
- "description": "{{ description.split('description ')[1] if description is defined }}",
- "entries": {
- # Description at this level is deprecated, should be removed when we plan to remove the
- # Description from entries level
- "description": "{{ description.split('description ')[1] if description is defined }}",
- "sequence": "{{ sequence.split(' ')[1] if sequence is defined }}",
- "action": "{{ action if action is defined }}",
- "prefix": "{{ prefix if prefix is defined }}",
- "ge": "{{ ge.split(' ')[1] if ge is defined }}",
- "le": "{{ le.split(' ')[1] if le is defined }}",
- },
+ "sequence": "{{ sequence }}",
+ "action": "{{ action }}",
+ "prefix": "{{ prefix }}",
+ "ge": "{{ ge }}",
+ "le": "{{ le }}",
},
],
},
},
+ },
+ {
+ "name": "description",
+ "getval": re.compile(
+ r"""
+ ^(?P<afi>ip|ipv6)\sprefix-list
+ (\s(?P<name>\S+))
+ (\sdescription\s(?P<description>.+$))?
+ """,
+ re.VERBOSE,
+ ),
+ "setval": "{{ 'ip' if afi == 'ipv4' else afi }} prefix-list {{ name }} description {{ description }}",
"shared": True,
+ "result": {
+ "{{ afi + name }}": {
+ "name": "{{ name }}",
+ "afi": "{{ 'ipv4' if afi is defined and afi=='ip' else 'ipv6' }}",
+ "description": "{{ description }}",
+ },
+ },
},
]
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/route_maps.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/route_maps.py
index 47b4402b6..1e569ccca 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/route_maps.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/route_maps.py
@@ -41,11 +41,11 @@ def _tmplt_route_map_match(config_data):
cmd += " best-range"
if config_data["match"]["additional_paths"]["best_range"].get("lower_limit"):
cmd += " lower-limit {lower_limit}".format(
- **config_data["match"]["additional_paths"]["best_range"]
+ **config_data["match"]["additional_paths"]["best_range"],
)
if config_data["match"]["additional_paths"]["best_range"].get("upper_limit"):
cmd += " upper-limit {upper_limit}".format(
- **config_data["match"]["additional_paths"]["best_range"]
+ **config_data["match"]["additional_paths"]["best_range"],
)
if config_data["match"]["additional_paths"].get("group_best"):
cmd += " group-best"
@@ -294,7 +294,7 @@ def _tmplt_route_map_match_ipv6(config_data):
cmd += " address"
if config_data["match"]["ipv6"]["address"].get("prefix_list"):
cmd += " prefix-list {prefix_list}".format(
- **config_data["match"]["ipv6"]["address"]
+ **config_data["match"]["ipv6"]["address"],
)
elif config_data["match"]["ipv6"]["address"].get("acl"):
cmd += " {acl}".format(**config_data["match"]["ipv6"]["address"])
@@ -306,7 +306,7 @@ def _tmplt_route_map_match_ipv6(config_data):
cmd += " src-pfx"
if config_data["match"]["ipv6"]["flowspec"].get("prefix_list"):
cmd += " prefix-list {prefix_list}".format(
- **config_data["match"]["ipv6"]["flowspec"]
+ **config_data["match"]["ipv6"]["flowspec"],
)
elif config_data["match"]["ipv6"]["flowspec"].get("acl"):
cmd += " {acl}".format(**config_data["match"]["ipv6"]["flowspec"])
@@ -314,7 +314,7 @@ def _tmplt_route_map_match_ipv6(config_data):
cmd += " next-hop"
if config_data["match"]["ipv6"]["next_hop"].get("prefix_list"):
cmd += " prefix-list {prefix_list}".format(
- **config_data["match"]["ipv6"]["next_hop"]
+ **config_data["match"]["ipv6"]["next_hop"],
)
elif config_data["match"]["ipv6"]["next_hop"].get("acl"):
cmd += " {acl}".format(**config_data["match"]["ipv6"]["next_hop"])
@@ -322,7 +322,7 @@ def _tmplt_route_map_match_ipv6(config_data):
cmd += " route-source"
if config_data["match"]["ipv6"]["route_source"].get("prefix_list"):
cmd += " prefix-list {prefix_list}".format(
- **config_data["match"]["ipv6"]["route_source"]
+ **config_data["match"]["ipv6"]["route_source"],
)
elif config_data["match"]["ipv6"]["route_source"].get("acl"):
cmd += " {acl}".format(**config_data["match"]["ipv6"]["route_source"])
@@ -380,7 +380,7 @@ def _tmplt_route_map_set(config_data):
if set.get("dampening"):
command.append(
"set dampening {penalty_half_time} {reuse_route_val} {suppress_route_val} {max_suppress}".format(
- **set["dampening"]
+ **set["dampening"],
),
)
if set.get("default"):
@@ -403,7 +403,7 @@ def _tmplt_route_map_set(config_data):
cmd = "set extcommunity rt"
if set["extcommunity"]["rt"].get("range"):
cmd += " range {lower_limit} {upper_limit}".format(
- **set["extcommunity"]["rt"]["range"]
+ **set["extcommunity"]["rt"]["range"],
)
elif set["extcommunity"]["rt"].get("address"):
cmd += " {address}".format(**set["extcommunity"]["rt"])
@@ -416,7 +416,7 @@ def _tmplt_route_map_set(config_data):
cmd = "set extcommunity vpn-distinguisher"
if set["extcommunity"]["vpn_distinguisher"].get("range"):
cmd += " range {lower_limit} {upper_limit}".format(
- **set["extcommunity"]["vpn_distinguisher"]["range"]
+ **set["extcommunity"]["vpn_distinguisher"]["range"],
)
elif set["extcommunity"]["vpn_distinguisher"].get("address"):
cmd += " {address}".format(**set["extcommunity"]["vpn_distinguisher"])
@@ -454,13 +454,13 @@ def _tmplt_route_map_set(config_data):
if set["metric"]["deviation"] == "plus":
cmd += (
" +{eigrp_delay} {metric_reliability} {metric_bandwidth} {mtu}".format(
- **set["metric"]
+ **set["metric"],
)
)
elif set["metric"]["deviation"] == "minus":
cmd += (
" -{eigrp_delay} {metric_reliability} {metric_bandwidth} {mtu}".format(
- **set["metric"]
+ **set["metric"],
)
)
if set["metric"].get("deviation") and not set["metric"].get("eigrp_delay"):
@@ -512,7 +512,7 @@ def _tmplt_route_map_set_ip(config_data):
cmd += " global next-hop"
if set_ip["global_route"].get("verify_availability"):
cmd += " verify-availability {address} {sequence} track {track}".format(
- **set_ip["global_route"]["verify_availability"]
+ **set_ip["global_route"]["verify_availability"],
)
elif set_ip["global_route"].get("address"):
cmd += " {address}".format(**set_ip["global_route"])
@@ -543,7 +543,8 @@ def _tmplt_route_map_set_ip(config_data):
if set_ip["next_hop"].get("verify_availability"):
command.append(
"{0} verify-availability {address} {sequence} track {track}".format(
- cmd, **set_ip["next_hop"]["verify_availability"]
+ cmd,
+ **set_ip["next_hop"]["verify_availability"],
),
)
if set_ip.get("precedence"):
@@ -584,7 +585,7 @@ def _tmplt_route_map_set_ip(config_data):
cmd += " vrf {vrf} next-hop".format(**set_ip)
if set_ip["vrf"].get("verify_availability").get("address"):
cmd += " verify-availability {address} {sequence} track {track}".format(
- **set_ip["vrf"]["verify_availability"]
+ **set_ip["vrf"]["verify_availability"],
)
elif set_ip["vrf"].get("address"):
cmd += " {address}".format(**set_ip["vrf"])
@@ -604,7 +605,7 @@ def _tmplt_route_map_set_ipv6(config_data):
cmd += " global next-hop"
if set_ipv6["global_route"].get("verify_availability"):
cmd += " verify-availability {address} {sequence} track {track}".format(
- **set_ipv6["global_route"]["verify_availability"]
+ **set_ipv6["global_route"]["verify_availability"],
)
elif set_ipv6["global_route"].get("address"):
cmd += " {address}".format(**set_ipv6["global_route"])
@@ -621,7 +622,7 @@ def _tmplt_route_map_set_ipv6(config_data):
if set_ipv6.get("vrf"):
cmd += (
" vrf {vrf} next-hop verify-availability {address} {sequence} track {track}".format(
- **set_ipv6["vrf"]["verify_availability"]
+ **set_ipv6["vrf"]["verify_availability"],
)
)
return cmd
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/snmp_server.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/snmp_server.py
index 87f9e7c07..5107612eb 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/snmp_server.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/snmp_server.py
@@ -85,8 +85,6 @@ def cmd_option_trap_bgp(config_data):
if conf:
if conf.get("enable"):
cmd += "snmp-server enable traps bgp"
- if conf.get("cbgp2"):
- cmd += " cbgp2"
if conf.get("state_changes"):
if conf.get("state_changes").get("enable"):
cmd += " state-changes"
@@ -281,6 +279,7 @@ class Snmp_serverTemplate(NetworkTemplate):
(\s(?P<version>v1|v3|v2c))?
(\s(?P<version_option>auth|noauth|priv))?
(\scontext\s(?P<context>\S+))?
+ (\smatch\s(?P<match>\S+))?
(\sread\s(?P<read>\S+))?
(\swrite\s(?P<write>\S+))?
(\snotify\s(?P<notify>\S+))?
@@ -293,6 +292,7 @@ class Snmp_serverTemplate(NetworkTemplate):
"{{ (' ' + version) if version is defined else '' }}"
"{{ (' ' + version_option) if version_option is defined else '' }}"
"{{ (' context ' + context) if context is defined else '' }}"
+ "{{ (' match ' + match) if match is defined else '' }}"
"{{ (' read ' + read) if read is defined else '' }}"
"{{ (' write ' + write) if write is defined else '' }}"
"{{ (' notify ' + notify) if notify is defined else '' }}"
@@ -305,6 +305,7 @@ class Snmp_serverTemplate(NetworkTemplate):
"version": "{{ version }}",
"version_option": "{{ version_option }}",
"context": "{{ context }}",
+ "match": "{{ match }}",
"notify": "{{ notify }}",
"read": "{{ read }}",
"write": "{{ write }}",
@@ -396,7 +397,7 @@ class Snmp_serverTemplate(NetworkTemplate):
(\sremote\s(?P<remote>\S+))?
(\sudp-port\s(?P<udp_port>\d+))?
(\s(?P<version>v1|v3|v2c))?
- (\s(?P<version_option>auth|encrypted))?
+ (\s(?P<version_option>encrypted))?
(\saccess\sipv6\s(?P<acl_v6>\S+))?
(\saccess\s(?P<acl_v4>\S+|\d+))?
(\svrf\s(?P<vrf>\S+))?
@@ -409,13 +410,17 @@ class Snmp_serverTemplate(NetworkTemplate):
"{{ (' udp-port ' + udp_port|string) if udp_port is defined else '' }}"
"{{ (' ' + version) if version is defined else '' }}"
"{{ (' ' + version_option) if version_option is defined else '' }}"
- "{{ (' auth ' + authentication.algorithm) if authentication is defined and authentication.algorithm is defined else '' }}"
- "{{ (' ' + authentication.password) if authentication is defined and authentication.password is defined else '' }}"
- "{{ (' priv ' + encryption.priv) if encryption is defined and encryption.priv is defined else '' }}"
- "{{ (' ' + encryption.priv_option) if encryption is defined and encryption.priv_option is defined else '' }}"
- "{{ (' ' + encryption.password) if encryption is defined and encryption.password is defined else '' }}"
- "{{ (' access ' + acl_v4|string) if acl_v4 is defined else '' }}"
- "{{ (' access ipv6 ' + acl_v6) if acl_v6 is defined else '' }}"
+ "{% if authentication is defined and 'algorithm' in authentication and 'password' in authentication %}"
+ "{{ (' auth ' + authentication.algorithm + ' ' + authentication.password) }}"
+ "{% if encryption is defined and 'priv' in encryption and 'password' in encryption %}"
+ "{{ (' priv ' + encryption.priv) }}"
+ "{{ (' ' + encryption.priv_option) if 'priv_option' in encryption else '' }}"
+ "{{ (' ' + encryption.password) }}"
+ "{% endif %}"
+ "{% endif %}"
+ "{{ (' access') if acl_v6 is defined or acl_v4 is defined else '' }}"
+ "{{ (' ipv6 ' + acl_v6) if acl_v6 is defined else '' }}"
+ "{{ (' ' + acl_v4|string) if acl_v4 is defined else '' }}"
"{{ (' vrf ' + vrf) if vrf is defined else '' }}",
"result": {
"users": [
@@ -464,7 +469,7 @@ class Snmp_serverTemplate(NetworkTemplate):
"name": "if_index",
"getval": re.compile(
r"""
- ^snmp-server\sifindex
+ ^snmp(-server|\sifmib)\sifindex
(\s(?P<if_index>persist))?
""", re.VERBOSE,
),
@@ -501,7 +506,7 @@ class Snmp_serverTemplate(NetworkTemplate):
r"""
^snmp-server\sip\sdscp
(\s(?P<dscp>\d+))?
- (\sprecedence(?P<precedence>\d+))?
+ (\sprecedence\s(?P<precedence>\d+))?
""", re.VERBOSE,
),
"setval": "snmp-server ip dscp "
@@ -605,8 +610,22 @@ class Snmp_serverTemplate(NetworkTemplate):
"trap_source": "{{ interface }}",
},
},
-
- { # only traps
+ # only traps
+ {
+ "name": "traps.aaa_server",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\saaa_server
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps aaa_server",
+ "result": {
+ "traps": {
+ "aaa_server": True,
+ },
+ },
+ },
+ {
"name": "traps.auth_framework",
"getval": re.compile(
r"""
@@ -614,14 +633,13 @@ class Snmp_serverTemplate(NetworkTemplate):
(\s(?P<sec_violation>sec-violation))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps"
- "{{ (' auth-framework') if traps.auth_framework.enable is defined else '' }}"
- "{{ (' sec-violation') if traps.auth_framework.sec_violation is defined else '' }}",
+ "setval": "snmp-server enable traps auth-framework"
+ "{{ (' sec-violation') if traps.auth_framework.sec_violation|d(False) is defined else '' }}",
"result": {
"traps": {
"auth_framework": {
"enable": True,
- "sec_violation": "{{ not not excluded }}",
+ "sec_violation": "{{ not not sec_violation }}",
},
},
},
@@ -653,12 +671,11 @@ class Snmp_serverTemplate(NetworkTemplate):
"getval": re.compile(
r"""
^snmp-server\senable\straps\sbgp
- (\s(?P<cbgp2>cbgp2))?
(\s(?P<state_changes>state-changes))?
(\s(?P<all>all))?
(\s(?P<backward_trans>backward-trans))?
(\s(?P<limited>limited))?
- (\sthreshold(?P<prefix>prefix))?
+ (\sthreshold(?P<prefix>prefix))?\s*$
""", re.VERBOSE,
),
"setval": cmd_option_trap_bgp,
@@ -666,7 +683,6 @@ class Snmp_serverTemplate(NetworkTemplate):
"result": {
"traps": {
"bgp": {
- "cbgp2": "{{ not not cbgp2 }}",
"enable": True,
"state_changes": {
"enable": "{{ not not state_changes }}",
@@ -682,6 +698,22 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
+ "name": "traps.bgp.cbgp2",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sbgp\scbgp2
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps bgp cbgp2",
+ "result": {
+ "traps": {
+ "bgp": {
+ "cbgp2": True,
+ },
+ },
+ },
+ },
+ {
"name": "traps.bridge",
"getval": re.compile(
r"""
@@ -704,6 +736,50 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
+ "name": "traps.bulkstat",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sbulkstat
+ (\s(?P<collection>collection))?
+ (\s(?P<transfer>transfer))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps bulkstat"
+ "{{ ' collection' if traps.bulkstat.collection|d(False) else '' }}"
+ "{{ ' transfer' if traps.bulkstat.transfer|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "bulkstat": {
+ "enable": True,
+ "collection": "{{ not not collection }}",
+ "transfer": "{{ not not transfer }}",
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.call_home",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\scall-home
+ (\s(?P<message_send_fail>message-send-fail))?
+ (\s(?P<server_fail>server-fail))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps call-home"
+ "{{ ' message-send-fail' if traps.call_home.message_send_fail|d(False) else '' }}"
+ "{{ ' server-fail' if traps.call_home.server_fail|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "call_home": {
+ "enable": True,
+ "message_send_fail": "{{ not not message_send_fail }}",
+ "server_fail": "{{ not not server_fail }}",
+ },
+ },
+ },
+ },
+ {
"name": "traps.casa",
"getval": re.compile(
r"""
@@ -718,44 +794,58 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
- "name": "traps.cnpd",
+ "name": "traps.cef",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\scnpd
+ ^snmp-server\senable\straps\scef
+ (\s(?P<resource_failure>resource-failure))?
+ (\s(?P<peer_state_change>peer-state-change))?
+ (\s(?P<peer_fib_state_change>peer-fib-state-change))?
+ (\s(?P<inconsistency>inconsistency))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps cnpd",
+ "setval": "snmp-server enable traps cef"
+ "{{ ' resource-failure' if traps.cef.resource_failure|d(False) else '' }}"
+ "{{ ' peer-state-change' if traps.cef.peer_state_change|d(False) else '' }}"
+ "{{ ' peer-fib-state-change' if traps.cef.peer_fib_state_change|d(False) else '' }}"
+ "{{ ' inconsistency' if traps.cef.inconsistency|d(False) else '' }}",
"result": {
"traps": {
- "cnpd": True,
+ "cef": {
+ "enable": True,
+ "inconsistency": "{{ not not inconsistency }}",
+ "peer_fib_state_change": "{{ not not peer_fib_state_change }}",
+ "peer_state_change": "{{ not not peer_state_change }}",
+ "resource_failure": "{{ not not resource_failure }}",
+ },
},
},
},
{
- "name": "traps.config",
+ "name": "traps.cnpd",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sconfig
+ ^snmp-server\senable\straps\scnpd
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps config",
+ "setval": "snmp-server enable traps cnpd",
"result": {
"traps": {
- "config": True,
+ "cnpd": True,
},
},
},
{
- "name": "traps.isis",
+ "name": "traps.config",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sisis$
+ ^snmp-server\senable\straps\sconfig\s*$
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps isis",
+ "setval": "snmp-server enable traps config",
"result": {
"traps": {
- "isis": True,
+ "config": True,
},
},
},
@@ -763,7 +853,7 @@ class Snmp_serverTemplate(NetworkTemplate):
"name": "traps.config_copy",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sconfig-copy
+ ^snmp-server\senable\straps\s(config-copy|copy-config)
""", re.VERBOSE,
),
"setval": "snmp-server enable traps config-copy",
@@ -788,6 +878,26 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
+ "name": "traps.cpu",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\scpu
+ ((?P<threshold_old>_threshold))?
+ (\s(?P<threshold>threshold))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps cpu"
+ "{{ ' threshold' if traps.cpu.threshold|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "cpu": {
+ "enable": True,
+ "threshold": "{{ not not threshold or not not threshold_old }}",
+ },
+ },
+ },
+ },
+ {
"name": "traps.dhcp",
"getval": re.compile(
r"""
@@ -802,6 +912,28 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
+ "name": "traps.dlsw",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sdlsw
+ (\s(?P<circuit>circuit))?
+ (\s(?P<tconn>tconn))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps dlsw"
+ "{{ ' circuit' if traps.dlsw.circuit|d(False) else '' }}"
+ "{{ ' tconn' if traps.dlsw.tconn|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "dlsw": {
+ "enable": True,
+ "circuit": "{{ not not circuit }}",
+ "tconn": "{{ not not tconn }}",
+ },
+ },
+ },
+ },
+ {
"name": "traps.eigrp",
"getval": re.compile(
r"""
@@ -816,10 +948,24 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
+ "name": "traps.energywise",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\senergywise$
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps energywise",
+ "result": {
+ "traps": {
+ "energywise": True,
+ },
+ },
+ },
+ {
"name": "traps.entity",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sentity
+ ^snmp-server\senable\straps\sentity\s*$
""", re.VERBOSE,
),
"setval": "snmp-server enable traps entity",
@@ -830,16 +976,228 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
- "name": "traps.energywise",
+ "name": "traps.entity_diag",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senergywise$
+ ^snmp-server\senable\straps\sentity-diag
+ (\s(?P<boot_up_fail>boot-up-fail))?
+ (\s(?P<hm_test_recover>hm-test-recover))?
+ (\s(?P<hm_thresh_reached>hm-thresh-reached))?
+ (\s(?P<scheduled_test_fail>scheduled-test-fail))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps energywise",
+ "setval": "snmp-server enable traps entity-diag"
+ "{{ ' boot-up-fail' if traps.entity_diag.boot_up_fail|d(False) else '' }}"
+ "{{ ' hm-test-recover' if traps.entity_diag.hm_test_recover|d(False) else '' }}"
+ "{{ ' hm-thresh-reached' if traps.entity_diag.hm_thresh_reached|d(False) else '' }}"
+ "{{ ' scheduled-test-fail' if traps.entity_diag.scheduled_test_fail|d(False) else '' }}",
"result": {
"traps": {
- "energywise": True,
+ "entity_diag": {
+ "enable": True,
+ "boot_up_fail": "{{ not not boot_up_fail }}",
+ "hm_test_recover": "{{ not not hm_test_recover }}",
+ "hm_thresh_reached": "{{ not not hm_thresh_reached }}",
+ "scheduled_test_fail": "{{ not not scheduled_test_fail }}",
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.entity_perf",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sentity-perf
+ (\s(?P<throughput_notif>throughput-notif))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps entity-perf"
+ "{{ ' throughput-notif' if traps.entity_perf.throughput_notif|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "entity_perf": {
+ "enable": True,
+ "throughput_notif": "{{ not not throughput_notif }}",
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.entity_state",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sentity-state
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps entity-state",
+ "result": {
+ "traps": {
+ "entity_state": True,
+ },
+ },
+ },
+ {
+ "name": "traps.envmon",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\senvmon
+ (\s(?P<fan>fan))?
+ (\s(?P<shutdown>shutdown))?
+ (\s(?P<supply>supply))?
+ (\s(?P<temperature>temperature))?
+ (\s(?P<status>status))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps envmon"
+ "{{ ' fan' if traps.envmon.fan_enable|d(False) else '' }}"
+ "{{ ' shutdown' if traps.envmon.shutdown|d(False) else '' }}"
+ "{{ ' supply' if traps.envmon.supply|d(False) else '' }}"
+ "{{ ' temperature' if traps.envmon.temperature|d(False) else '' }}"
+ "{{ ' status' if traps.envmon.status|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "envmon": {
+ "enable": True,
+ "fan_enable": "{{ True if fan else False }}",
+ "shutdown": "{{ True if shutdown else False }}",
+ "supply": "{{ True if supply else False }}",
+ "temperature": "{{ True if temperature else False }}",
+ "status": "{{ True if status else False }}",
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.errdisable",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\serrdisable
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps errdisable",
+ "result": {
+ "traps": {
+ "errdisable": True,
+ },
+ },
+ },
+ {
+ "name": "traps.ether_oam",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sether-oam
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps ether-oam",
+ "result": {
+ "traps": {
+ "ether_oam": True,
+ },
+ },
+ },
+ {
+ "name": "traps.ethernet.cfm.alarm",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sethernet\scfm\salarm
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps ethernet cfm alarm",
+ "result": {
+ "traps": {
+ "ethernet": {
+ "cfm": {
+ "alarm": True,
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.ethernet.cfm.cc",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sethernet\scfm\scc
+ (\s(?P<mep_up>mep-up))?
+ (\s(?P<mep_down>mep-down))?
+ (\s(?P<cross_connect>cross-connect))?
+ (\s(?P<loop>loop))?
+ (\s(?P<config>config))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps ethernet cfm cc"
+ "{{ ' mep-up' if traps.ethernet.cfm.cc.mep_up|d(False) else ''}}"
+ "{{ ' mep-down' if traps.ethernet.cfm.cc.mep_down|d(False) else ''}}"
+ "{{ ' cross-connect' if traps.ethernet.cfm.cc.cross_connect|d(False) else ''}}"
+ "{{ ' loop' if traps.ethernet.cfm.cc.loop|d(False) else ''}}"
+ "{{ ' config' if traps.ethernet.cfm.cc.config|d(False) else ''}}",
+ "result": {
+ "traps": {
+ "ethernet": {
+ "cfm": {
+ "cc": {
+ "mep_up": "{{ not not mep_up }}",
+ "mep_down": "{{ not not mep_down }}",
+ "cross_connect": "{{ not not cross_connect }}",
+ "loop": "{{ not not loop }}",
+ "config": "{{ not not config }}",
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.ethernet.cfm.crosscheck",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sethernet\scfm\scrosscheck
+ (\s(?P<mep_missing>mep-missing))?
+ (\s(?P<mep_unknown>mep-unknown))?
+ (\s(?P<service_up>service-up))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps ethernet cfm crosscheck"
+ "{{ ' mep-missing' if traps.ethernet.cfm.crosscheck.mep_missing|d(False) else ''}}"
+ "{{ ' mep-unknown' if traps.ethernet.cfm.crosscheck.mep_unknown|d(False) else ''}}"
+ "{{ ' service-up' if traps.ethernet.cfm.crosscheck.service_up|d(False) else ''}}",
+ "result": {
+ "traps": {
+ "ethernet": {
+ "cfm": {
+ "crosscheck": {
+ "mep_missing": "{{ not not mep_missing }}",
+ "mep_unknown": "{{ not not mep_unknown }}",
+ "service_up": "{{ not not service_up }}",
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.ethernet.evc",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sethernet\sevc
+ (\s(?P<status>status))?
+ (\s(?P<create>create))?
+ (\s(?P<delete>delete))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps ethernet evc"
+ "{{ ' status' if traps.ethernet.evc.status|d(False) else ''}}"
+ "{{ ' create' if traps.ethernet.evc.create|d(False) else ''}}"
+ "{{ ' delete' if traps.ethernet.evc.delete|d(False) else ''}}",
+ "result": {
+ "traps": {
+ "ethernet": {
+ "evc": {
+ "create": "{{ not not create }}",
+ "delete": "{{ not not delete }}",
+ "status": "{{ not not status }}",
+ },
+ },
},
},
},
@@ -858,6 +1216,69 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
+ "name": "traps.flash",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sflash
+ (\s(?P<insertion>insertion))?
+ (\s(?P<removal>removal))?
+ (\s(?P<lowspace>lowspace))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps flash"
+ "{{ ' insertion' if traps.flash.insertion|d(False) else '' }}"
+ "{{ ' removal' if traps.flash.removal|d(False) else '' }}"
+ "{{ ' lowspace' if traps.flash.lowspace|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "flash": {
+ "enable": True,
+ "insertion": "{{ not not insertion }}",
+ "removal": "{{ not not removal }}",
+ "lowspace": "{{ not not lowspace }}",
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.flex_links",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sflex-links
+ (\s(?P<status>status))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps flex-links"
+ "{{ ' status' if traps.flex_links.status|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "flex_links": {
+ "enable": True,
+ "status": "{{ not not status }}",
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.firewall",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sfirewall
+ (\s(?P<serverstatus>serverstatus))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps firewall"
+ "{{ ' serverstatus' if traps.firewall.serverstatus|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "firewall": {
+ "enable": True,
+ "serverstatus": "{{ not not serverstatus }}",
+ },
+ },
+ },
+ },
+ {
"name": "traps.flowmon",
"getval": re.compile(
r"""
@@ -872,6 +1293,46 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
+ "name": "traps.frame_relay",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\s(framerelay|frame-relay)$
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps frame-relay",
+ "result": {
+ "traps": {
+ "frame_relay": {
+ "enable": True,
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.frame_relay.subif",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sframe-relay\ssubif
+ (\sinterval(?P<interval>\d+))?
+ (\scount(?P<count>\d+))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps frame-relay subif"
+ "{{ ' interval ' + interval|string if traps.frame_relay.subif.interval|d(False) else '' }}"
+ "{{ ' count ' + count|string if traps.frame_relay.subif.count|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "frame_relay": {
+ "subif": {
+ "enable": "{{ not not subif }}",
+ "interval": "{{ interval }}",
+ "count": "{{ count }}",
+ },
+ },
+ },
+ },
+ },
+ {
"name": "traps.fru_ctrl",
"getval": re.compile(
r"""
@@ -900,519 +1361,720 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
- "name": "traps.ipsla",
+ "name": "traps.ike.policy.add",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sipsla
+ ^snmp-server\senable\straps\sike\spolicy\sadd
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ipsla",
+ "setval": "snmp-server enable traps ike policy add",
"result": {
"traps": {
- "ipsla": True,
+ "ike": {
+ "policy": {
+ "add": True,
+ },
+ },
},
},
},
{
- "name": "traps.msdp",
+ "name": "traps.ike.policy.delete",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\smsdp$
+ ^snmp-server\senable\straps\sike\spolicy\sdelete
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps msdp",
+ "setval": "snmp-server enable traps ike policy delete",
"result": {
"traps": {
- "msdp": True,
+ "ike": {
+ "policy": {
+ "delete": True,
+ },
+ },
},
},
},
{
- "name": "traps.pw_vc",
+ "name": "traps.ike.tunnel.start",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\spw\svc$
+ ^snmp-server\senable\straps\sike\stunnel\sstart
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps pw vc",
+ "setval": "snmp-server enable traps ike tunnel start",
"result": {
"traps": {
- "pw_vc": True,
+ "ike": {
+ "tunnel": {
+ "start": True,
+ },
+ },
},
},
},
{
- "name": "traps.mvpn",
+ "name": "traps.ike.tunnel.stop",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\smvpn
+ ^snmp-server\senable\straps\sike\stunnel\sstop
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps mvpn",
+ "setval": "snmp-server enable traps ike tunnel stop",
"result": {
"traps": {
- "mvpn": True,
+ "ike": {
+ "tunnel": {
+ "stop": True,
+ },
+ },
},
},
},
{
- "name": "traps.mpls_vpn",
+ "name": "traps.ipmulticast",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\smpls\svpn
+ ^snmp-server\senable\straps\sipmulticast
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps mpls vpn",
+ "setval": "snmp-server enable traps ipmulticast",
"result": {
"traps": {
- "mpls_vpn": True,
+ "ipmulticast": True,
},
},
},
{
- "name": "traps.pki",
+ "name": "traps.ipsec.cryptomap.add",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\spki
+ ^snmp-server\senable\straps\sipsec\scryptomap\sadd
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps pki",
+ "setval": "snmp-server enable traps ipsec cryptomap add",
"result": {
"traps": {
- "pki": True,
+ "ipsec": {
+ "cryptomap": {
+ "add": True,
+ },
+ },
},
},
},
{
- "name": "traps.rsvp",
+ "name": "traps.ipsec.cryptomap.attach",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\srsvp
+ ^snmp-server\senable\straps\sipsec\scryptomap\sattach
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps rsvp",
+ "setval": "snmp-server enable traps ipsec cryptomap attach",
"result": {
"traps": {
- "rsvp": True,
+ "ipsec": {
+ "cryptomap": {
+ "attach": True,
+ },
+ },
},
},
},
{
- "name": "traps.syslog",
+ "name": "traps.ipsec.cryptomap.delete",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\ssyslog
+ ^snmp-server\senable\straps\sipsec\scryptomap\sdelete
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps syslog",
+ "setval": "snmp-server enable traps ipsec cryptomap delete",
"result": {
"traps": {
- "syslog": True,
+ "ipsec": {
+ "cryptomap": {
+ "delete": True,
+ },
+ },
},
},
},
{
- "name": "traps.transceiver_all",
+ "name": "traps.ipsec.cryptomap.detach",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\stransceiver\sall
+ ^snmp-server\senable\straps\sipsec\scryptomap\sdetach
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps transceiver all",
+ "setval": "snmp-server enable traps ipsec cryptomap detach",
"result": {
"traps": {
- "transceiver_all": True,
+ "ipsec": {
+ "cryptomap": {
+ "detach": True,
+ },
+ },
},
},
},
{
- "name": "traps.tty",
+ "name": "traps.ipsec.too_many_sas",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\stty
+ ^snmp-server\senable\straps\sipsec\stoo-many-sas
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps tty",
+ "setval": "snmp-server enable traps ipsec too-many-sas",
"result": {
"traps": {
- "tty": True,
+ "ipsec": {
+ "too_many_sas": True,
+ },
},
},
},
{
- "name": "traps.envmon.shutdown",
+ "name": "traps.ipsec.tunnel.start",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senvmon\sshutdown$
+ ^snmp-server\senable\straps\sipsec\stunnel\sstart
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps envmon shutdown",
+ "setval": "snmp-server enable traps ipsec tunnel start",
"result": {
"traps": {
- "envmon": {
- "shutdown": True,
+ "ipsec": {
+ "tunnel": {
+ "start": True,
+ },
},
},
},
},
{
- "name": "traps.envmon.status",
+ "name": "traps.ipsec.tunnel.stop",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senvmon\sstatus$
+ ^snmp-server\senable\straps\sipsec\stunnel\sstop
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps envmon status",
+ "setval": "snmp-server enable traps ipsec tunnel stop",
"result": {
"traps": {
- "envmon": {
- "status": True,
+ "ipsec": {
+ "tunnel": {
+ "stop": True,
+ },
},
},
},
},
{
- "name": "traps.envmon.supply",
+ "name": "traps.ipsla",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senvmon\ssupply$
+ ^snmp-server\senable\straps\sipsla
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps envmon supply",
+ "setval": "snmp-server enable traps ipsla",
"result": {
"traps": {
- "envmon": {
- "supply": True,
- },
+ "ipsla": True,
},
},
},
{
- "name": "traps.envmon.temperature",
+ "name": "traps.isis",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senvmon\stemperature$
+ ^snmp-server\senable\straps\sisis$
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps envmon temperature",
+ "setval": "snmp-server enable traps isis",
"result": {
"traps": {
- "envmon": {
- "temperature": True,
- },
+ "isis": True,
},
},
},
{
- "name": "traps.envmon.fan.enable",
+ "name": "traps.l2tc",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senvmon\sfan$
+ ^snmp-server\senable\straps\sl2tc
+ (\s(?P<threshold>threshold))?
+ (\s(?P<sys_threshold>sys-threshold))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps envmon fan",
+ "setval": "snmp-server enable traps l2tc"
+ "{{ ' threshold' if traps.l2tc.threshold|d(False) else '' }}"
+ "{{ ' sys-threshold' if traps.l2tc.sys_threshold|d(False) else '' }}",
"result": {
"traps": {
- "envmon": {
- "fan": {
- "enable": True,
- },
+ "l2tc": {
+ "enable": True,
+ "sys_threshold": "{{ not not sys_threshold }}",
+ "threshold": "{{ not not threshold }}",
},
},
},
},
{
- "name": "traps.envmon.fan.shutdown",
+ "name": "traps.l2tun.pseudowire_status",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senvmon\sfan\sshutdown$
+ ^snmp-server\senable\straps\sl2tun\spseudowire\sstatus
+ (\s(?P<pseudowire_status>))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps envmon fan shutdown",
+ "setval": "snmp-server enable traps l2tun pseudowire status",
"result": {
"traps": {
- "envmon": {
- "fan": {
- "shutdown": True,
- },
+ "l2tun": {
+ "pseudowire_status": True,
},
},
},
},
{
- "name": "traps.envmon.fan.status",
+ "name": "traps.l2tun.session",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senvmon\sfan\sstatus$
+ ^snmp-server\senable\straps\sl2tun\ssession
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps envmon fan status",
+ "setval": "snmp-server enable traps l2tun session",
"result": {
"traps": {
- "envmon": {
- "fan": {
- "status": True,
- },
+ "l2tun": {
+ "session": True,
},
},
},
},
{
- "name": "traps.envmon.fan.supply",
+ "name": "traps.license",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senvmon\sfan\ssupply$
+ ^snmp-server\senable\straps\slicense
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps envmon fan supply",
+ "setval": "snmp-server enable traps license",
"result": {
"traps": {
- "envmon": {
- "fan": {
- "supply": True,
- },
- },
+ "license": True,
},
},
},
{
- "name": "traps.envmon.fan.temperature",
+ "name": "traps.lisp",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\senvmon\sfan\stemperature$
+ ^snmp-server\senable\straps\slisp
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps envmon fan temperature",
+ "setval": "snmp-server enable traps lisp",
"result": {
"traps": {
- "envmon": {
- "fan": {
- "temperature": True,
- },
- },
+ "lisp": True,
},
},
},
{
- "name": "traps.vrrp",
+ "name": "traps.local_auth",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\svrrp
+ ^snmp-server\senable\straps\slocal-auth
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps vrrp",
+ "setval": "snmp-server enable traps local-auth",
"result": {
"traps": {
- "vrrp": True,
+ "local_auth": True,
},
},
},
{
- "name": "traps.ipmulticast",
+ "name": "traps.mac_notification",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sipmulticast
+ ^snmp-server\senable\straps\smac-notification
+ (\s(?P<change>change))?
+ (\s(?P<move>move))?
+ (\s(?P<threshold>threshold))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ipmulticast",
+ "setval": "snmp-server enable traps mac-notification"
+ "{{ ' change' if traps.mac_notification.change|d(False) else '' }}"
+ "{{ ' move' if traps.mac_notification.move|d(False) else '' }}"
+ "{{ ' threshold' if traps.mac_notification.threshold|d(False) else '' }}",
"result": {
"traps": {
- "ipmulticast": True,
+ "mac_notification": {
+ "enable": True,
+ "change": "{{ not not change }}",
+ "move": "{{ not not move }}",
+ "threshold": "{{ not not threshold }}",
+ },
},
},
},
{
- "name": "traps.ike.policy.add",
+ "name": "traps.memory",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sike\spolicy\sadd
+ ^snmp-server\senable\straps\smemory
+ (\s(?P<bufferpeak>bufferpeak))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ike policy add",
+ "setval": "snmp-server enable traps memory"
+ "{{ ' bufferpeak' if traps.memory.bufferpeak|d(False) else '' }}",
"result": {
"traps": {
- "ike": {
- "policy": {
- "add": True,
- },
+ "memory": {
+ "enable": True,
+ "bufferpeak": "{{ not not bufferpeak }}",
},
},
},
},
{
- "name": "traps.ike.policy.delete",
+ "name": "traps.mpls.fast_reroute",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sike\spolicy\sdelete
+ ^snmp-server\senable\straps\smpls\sfast-reroute
+ (\s(?P<protected>protected))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ike policy delete",
+ "setval": "snmp-server enable traps mpls fast-reroute"
+ "{{ ' protected' if traps.mpls.fast_reroute.protected|d(False) else '' }}",
"result": {
"traps": {
- "ike": {
- "policy": {
- "delete": True,
+ "mpls": {
+ "fast_reroute": {
+ "enable": True,
+ "protected": "{{ not not protected }}",
},
},
},
},
},
{
- "name": "traps.ike.tunnel.start",
+ "name": "traps.mpls.ldp",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sike\stunnel\sstart
+ ^snmp-server\senable\straps\smpls\sldp
+ (\s(?P<pv_limit>pv-limit))?
+ (\s(?P<session_down>session-down))?
+ (\s(?P<session_up>session-up))?
+ (\s(?P<threshold>threshold))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ike tunnel start",
+ "setval": "snmp-server enable traps mpls ldp"
+ "{{ ' pv-limit' if traps.mpls.ldp.pv_limit|d(False) else '' }}"
+ "{{ ' session-down' if traps.mpls.ldp.session_down|d(False) else '' }}"
+ "{{ ' session-up' if traps.mpls.ldp.session_up|d(False) else '' }}"
+ "{{ ' threshold' if traps.mpls.ldp.threshold|d(False) else '' }}",
"result": {
"traps": {
- "ike": {
- "tunnel": {
- "start": True,
+ "mpls": {
+ "ldp": {
+ "enable": True,
+ "pv_limit": "{{ not not pv_limit }}",
+ "session_down": "{{ not not session_down }}",
+ "session_up": "{{ not not session_up }}",
+ "threshold": "{{ not not threshold }}",
},
},
},
},
},
{
- "name": "traps.ike.tunnel.stop",
+ "name": "traps.mpls.rfc.ldp",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sike\stunnel\sstop
+ ^snmp-server\senable\straps\smpls\srfc\sldp
+ (\s(?P<pv_limit>pv-limit))?
+ (\s(?P<session_down>session-down))?
+ (\s(?P<session_up>session-up))?
+ (\s(?P<threshold>threshold))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ike tunnel stop",
+ "setval": "snmp-server enable traps mpls rfc ldp"
+ "{{ ' pv-limit' if traps.mpls.rfc.ldp.pv_limit|d(False) else '' }}"
+ "{{ ' session-down' if traps.mpls.rfc.ldp.session_down|d(False) else '' }}"
+ "{{ ' session-up' if traps.mpls.rfc.ldp.session_up|d(False) else '' }}"
+ "{{ ' threshold' if traps.mpls.rfc.ldp.threshold|d(False) else '' }}",
"result": {
"traps": {
- "ike": {
- "tunnel": {
- "stop": True,
+ "mpls": {
+ "rfc": {
+ "ldp": {
+ "enable": True,
+ "pv_limit": "{{ not not pv_limit }}",
+ "session_down": "{{ not not session_down }}",
+ "session_up": "{{ not not session_up }}",
+ "threshold": "{{ not not threshold }}",
+ },
},
},
},
},
},
{
- "name": "traps.ipsec.cryptomap.add",
+ "name": "traps.mpls.rfc.traffic_eng",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sipsec\scryptomap\sadd
+ ^snmp-server\senable\straps\smpls\srfc\straffic-eng
+ (\s(?P<down>down))?
+ (\s(?P<reoptimized>reoptimized))?
+ (\s(?P<reroute>reroute))?
+ (\s(?P<up>up))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ipsec cryptomap add",
+ "setval": "snmp-server enable traps mpls rfc traffic-eng"
+ "{{ ' down' if traps.mpls.rfc.traffic_eng.down|d(False) else '' }}"
+ "{{ ' reoptimized' if traps.mpls.rfc.traffic_eng.reoptimized|d(False) else '' }}"
+ "{{ ' reroute' if traps.mpls.rfc.traffic_eng.reroute|d(False) else '' }}"
+ "{{ ' up' if traps.mpls.rfc.traffic_eng.up|d(False) else '' }}",
"result": {
"traps": {
- "ipsec": {
- "cryptomap": {
- "add": True,
+ "mpls": {
+ "rfc": {
+ "traffic_eng": {
+ "enable": True,
+ "down": "{{ not not down }}",
+ "reoptimized": "{{ not not reoptimized }}",
+ "reroute": "{{ not not reroute }}",
+ "up": "{{ not not up }}",
+ },
},
},
},
},
},
{
- "name": "traps.ipsec.cryptomap.delete",
+ "name": "traps.mpls.rfc.vpn",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sipsec\scryptomap\sdelete
+ ^snmp-server\senable\straps\smpls\srfc\svpn
+ (\s(?P<illegal_label>illegal-label))?
+ (\s(?P<max_thresh_cleared>max-thresh-cleared))?
+ (\s(?P<max_threshold>max-threshold))?
+ (\s(?P<mid_threshold>mid-threshold))?
+ (\s(?P<vrf_down>vrf-down))?
+ (\s(?P<vrf_up>vrf-up))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ipsec cryptomap delete",
+ "setval": "snmp-server enable traps mpls rfc vpn"
+ "{{ ' illegal-label' if traps.mpls.rfc.vpn.illegal_label|d(False) else '' }}"
+ "{{ ' max-thresh-cleared' if traps.mpls.rfc.vpn.max_thresh_cleared|d(False) else '' }}"
+ "{{ ' max-threshold' if traps.mpls.rfc.vpn.max_threshold|d(False) else '' }}"
+ "{{ ' mid-threshold' if traps.mpls.rfc.vpn.mid_threshold|d(False) else '' }}"
+ "{{ ' vrf-down' if traps.mpls.rfc.vpn.vrf_down|d(False) else '' }}"
+ "{{ ' vrf-up' if traps.mpls.rfc.vpn.vrf_up|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "mpls": {
+ "rfc": {
+ "vpn": {
+ "enable": True,
+ "illegal_label": "{{ not not illegal_label }}",
+ "max_thresh_cleared": "{{ not not max_thresh_cleared }}",
+ "max_threshold": "{{ not not max_threshold }}",
+ "mid_threshold": "{{ not not mid_threshold }}",
+ "vrf_down": "{{ not not vrf_down }}",
+ "vrf_up": "{{ not not vrf_up }}",
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.mpls.traffic_eng",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\smpls\straffic-eng
+ (\s(?P<down>down))?
+ (\s(?P<reroute>reroute))?
+ (\s(?P<up>up))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps mpls traffic-eng"
+ "{{ ' down' if traps.mpls.traffic_eng.down|d(False) else '' }}"
+ "{{ ' reroute' if traps.mpls.traffic_eng.reroute|d(False) else '' }}"
+ "{{ ' up' if traps.mpls.traffic_eng.up|d(False) else '' }}",
"result": {
"traps": {
- "ipsec": {
- "cryptomap": {
- "delete": True,
+ "mpls": {
+ "traffic_eng": {
+ "enable": True,
+ "down": "{{ not not down }}",
+ "reroute": "{{ not not reroute }}",
+ "up": "{{ not not up }}",
},
},
},
},
},
{
- "name": "traps.ipsec.cryptomap.attach",
+ "name": "traps.mpls.vpn",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sipsec\scryptomap\sattach
+ ^snmp-server\senable\straps\smpls(-|\s)vpn
+ (\s(?P<illegal_label>illegal-label))?
+ (\s(?P<max_thresh_cleared>max-thresh-cleared))?
+ (\s(?P<max_threshold>max-threshold))?
+ (\s(?P<mid_threshold>mid-threshold))?
+ (\s(?P<vrf_down>vrf-down))?
+ (\s(?P<vrf_up>vrf-up))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ipsec cryptomap attach",
+ "setval": "{% if 'vpn' in traps.mpls and traps.mpls.vpn.enable %}"
+ "snmp-server enable traps mpls vpn"
+ "{{ ' illegal-label' if traps.mpls.vpn.illegal_label|d(False) else '' }}"
+ "{{ ' max-thresh-cleared' if traps.mpls.vpn.max_thresh_cleared|d(False) else '' }}"
+ "{{ ' max-threshold' if traps.mpls.vpn.max_threshold|d(False) else '' }}"
+ "{{ ' mid-threshold' if traps.mpls.vpn.mid_threshold|d(False) else '' }}"
+ "{{ ' vrf-down' if traps.mpls.vpn.vrf_down|d(False) else '' }}"
+ "{{ ' vrf-up' if traps.mpls.vpn.vrf_up|d(False) else '' }}"
+ "{% endif %}",
"result": {
"traps": {
- "ipsec": {
- "cryptomap": {
- "attach": True,
+ "mpls": {
+ "vpn": {
+ "enable": True,
+ "illegal_label": "{{ not not illegal_label }}",
+ "max_thresh_cleared": "{{ not not max_thresh_cleared }}",
+ "max_threshold": "{{ not not max_threshold }}",
+ "mid_threshold": "{{ not not mid_threshold }}",
+ "vrf_down": "{{ not not vrf_down }}",
+ "vrf_up": "{{ not not vrf_up }}",
},
},
},
},
},
{
- "name": "traps.ipsec.cryptomap.detach",
+ "name": "traps.msdp",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sipsec\scryptomap\sdetach
+ ^snmp-server\senable\straps\smsdp$
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ipsec cryptomap detach",
+ "setval": "snmp-server enable traps msdp",
"result": {
"traps": {
- "ipsec": {
- "cryptomap": {
- "detach": True,
+ "msdp": True,
+ },
+ },
+ },
+ {
+ "name": "traps.mvpn",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\smvpn
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps mvpn",
+ "result": {
+ "traps": {
+ "mvpn": True,
+ },
+ },
+ },
+ {
+ "name": "traps.nhrp.nhc",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\snhrp\snhc
+ (\s(?P<down>down))?
+ (\s(?P<up>up))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps nhrp nhc"
+ "{{ ' down' if traps.nhrp.nhc.down|d(False) else '' }}"
+ "{{ ' up' if traps.nhrp.nhc.up|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "nhrp": {
+ "enable": True,
+ "nhc": {
+ "enable": True,
+ "down": "{{ not not down }}",
+ "up": "{{ not not up }}",
},
},
},
},
},
{
- "name": "traps.ipsec.tunnel.start",
+ "name": "traps.nhrp.nhp",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sipsec\stunnel\sstart
+ ^snmp-server\senable\straps\snhrp\snhp
+ (\s(?P<down>down))?
+ (\s(?P<up>up))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ipsec tunnel start",
+ "setval": "snmp-server enable traps nhrp nhp"
+ "{{ ' down' if traps.nhrp.nhc.down|d(False) else '' }}"
+ "{{ ' up' if traps.nhrp.nhc.up|d(False) else '' }}",
"result": {
"traps": {
- "ipsec": {
- "tunnel": {
- "start": True,
+ "nhrp": {
+ "enable": True,
+ "nhp": {
+ "enable": True,
+ "down": "{{ not not down }}",
+ "up": "{{ not not up }}",
},
},
},
},
},
{
- "name": "traps.ipsec.tunnel.stop",
+ "name": "traps.nhrp.nhs",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sipsec\stunnel\sstop
+ ^snmp-server\senable\straps\snhrp\snhs
+ (\s(?P<down>down))?
+ (\s(?P<up>up))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ipsec tunnel stop",
+ "setval": "snmp-server enable traps nhrp nhs"
+ "{{ ' down' if traps.nhrp.nhc.down|d(False) else '' }}"
+ "{{ ' up' if traps.nhrp.nhc.up|d(False) else '' }}",
"result": {
"traps": {
- "ipsec": {
- "tunnel": {
- "stop": True,
+ "nhrp": {
+ "enable": True,
+ "nhs": {
+ "enable": True,
+ "down": "{{ not not down }}",
+ "up": "{{ not not up }}",
},
},
},
},
},
{
- "name": "traps.ipsec.too_many_sas",
+ "name": "traps.nhrp.quota_exceeded",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sipsec\stoo-many-sas
+ ^snmp-server\senable\straps\snhrp
+ (\s(?P<quota_exceeded>quota-exceeded))?$
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ipsec too-many-sas",
+ "setval": "snmp-server enable traps nhrp"
+ "{{ ' quota-exceeded' if traps.nhrp.quota_exceeded|d(False) else '' }}",
"result": {
"traps": {
- "ipsec": {
- "too_many_sas": True,
+ "nhrp": {
+ "enable": True,
+ "quota_exceeded": "{{ not not quota_exceeded }}",
},
},
},
@@ -1436,36 +2098,36 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
- "name": "traps.ospf.cisco_specific.retransmit",
+ "name": "traps.ospf.cisco_specific.lsa",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sospf\scisco-specific\sretransmit
+ ^snmp-server\senable\straps\sospf\scisco-specific\slsa
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ospf cisco-specific retransmit",
+ "setval": "snmp-server enable traps ospf cisco-specific lsa",
"result": {
"traps": {
"ospf": {
"cisco_specific": {
- "retransmit": True,
+ "lsa": True,
},
},
},
},
},
{
- "name": "traps.ospf.cisco_specific.lsa",
+ "name": "traps.ospf.cisco_specific.retransmit",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sospf\scisco-specific\slsa
+ ^snmp-server\senable\straps\sospf\scisco-specific\sretransmit
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ospf cisco-specific lsa",
+ "setval": "snmp-server enable traps ospf cisco-specific retransmit",
"result": {
"traps": {
"ospf": {
"cisco_specific": {
- "lsa": True,
+ "retransmit": True,
},
},
},
@@ -1552,33 +2214,33 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
- "name": "traps.ospf.retransmit",
+ "name": "traps.ospf.lsa",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sospf\sretransmit
+ ^snmp-server\senable\straps\sospf\slsa
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ospf retransmit",
+ "setval": "snmp-server enable traps ospf lsa",
"result": {
"traps": {
"ospf": {
- "retransmit": True,
+ "lsa": True,
},
},
},
},
{
- "name": "traps.ospf.lsa",
+ "name": "traps.ospf.retransmit",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sospf\slsa
+ ^snmp-server\senable\straps\sospf\sretransmit
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ospf lsa",
+ "setval": "snmp-server enable traps ospf retransmit",
"result": {
"traps": {
"ospf": {
- "lsa": True,
+ "retransmit": True,
},
},
},
@@ -1600,72 +2262,91 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
- "name": "traps.l2tun.pseudowire_status",
- "getval": re.compile(
- r"""
- ^snmp-server\senable\straps\sl2tun\spseudowire\sstatus
- (\s(?P<pseudowire_status>))?
- """, re.VERBOSE,
- ),
- "setval": "snmp-server enable traps l2tun pseudowire status",
- "result": {
- "traps": {
- "l2tun": {
- "pseudowire_status": True,
- },
- },
- },
- },
- {
- "name": "traps.l2tun.session",
+ "name": "traps.ospfv3.errors",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sl2tun\ssession
+ ^snmp-server\senable\straps\sospfv3\serrors
+ (\s(?P<bad_packet>bad-packet))?
+ (\s(?P<config_error>config-error))?
+ (\s(?P<virt_bad_packet>virt-bad-packet))?
+ (\s(?P<virt_config_error>virt-config-error))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps l2tun session",
+ "setval": "snmp-server enable traps ospfv3 errors"
+ "{{ ' bad-packet' if traps.ospfv3.errors.bad_packet|d(False) else '' }}"
+ "{{ ' config-error' if traps.ospfv3.errors.config_error|d(False) else '' }}"
+ "{{ ' virt-bad-packet' if traps.ospfv3.errors.virt_bad_packet|d(False) else '' }}"
+ "{{ ' virt-config-error' if traps.ospfv3.errors.virt_config_error|d(False) else '' }}",
"result": {
"traps": {
- "l2tun": {
- "session": True,
+ "ospfv3": {
+ "errors": {
+ "enable": True,
+ "bad_packet": "{{ not not bad_packet }}",
+ "config_error": "{{ not not config_error }}",
+ "virt_bad_packet": "{{ not not virt_bad_packet }}",
+ "virt_config_error": "{{ not not virt_config_error }}",
+ },
},
},
},
},
{
- "name": "traps.cpu",
+ "name": "traps.ospfv3.rate_limit",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\scpu
- (\s(?P<threshold>threshold))?
+ ^snmp-server\senable\straps\sospfv3\srate-limit
+ (\s(?P<rate_limit>[0-9]+))?
""", re.VERBOSE,
),
- "setval": "{{ 'snmp-server enable traps cpu' if traps.cpu.enable is defined else '' }}"
- "{{ ' threshold' if traps.cpu.threshold is defined else '' }}",
+ "setval": "snmp-server enable traps ospfv3 rate_limit"
+ "{{ traps.ospfv3.rate_limit|int if traps.ospfv3.rate_limit|int > 0 else '' }}",
"result": {
"traps": {
- "cpu": {
- "enable": True,
- "threshold": "{{ not not threshold }}",
+ "ospfv3": {
+ "rate_limit": "{{ rate_limit if rate_limit|int >=2 or rate_limit|int <= 60 }}",
},
},
},
},
{
- "name": "traps.firewall",
+ "name": "traps.ospfv3.state_change",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sfirewall
- (\s(?P<serverstatus>serverstatus))?
+ ^snmp-server\senable\straps\sospfv3\sstate-change
+ (\s(?P<if_state_change>if-state-change))?
+ (\s(?P<neighbor_restart_helper_status_change>neighbor-restart-helper-status-change))?
+ (\s(?P<neighbor_state_change>neighbor-state-change))?
+ (\s(?P<nssa_translator_status_change>nssa-translator-status-change))?
+ (\s(?P<restart_status_change>restart-status-change))?
+ (\s(?P<virtif_state_change>virtif-state-change))?
+ (\s(?P<virtneighbor_restart_helper_status_change>virtneighbor-restart-helper-status-change))?
+ (\s(?P<virtneighbor_state_change>virtneighbor-state-change))?
""", re.VERBOSE,
),
- "setval": "{{ 'snmp-server enable traps firewall' if traps.firewall.enable is defined else '' }}"
- "{{ ' serverstatus' if traps.firewall.serverstatus|d(False) else ''}}",
+ "setval": "snmp-server enable traps ospfv3 state-change"
+ "{{ ' if-state-change' if traps.ospfv3.state_change.if_state_change|d(False) else '' }}"
+ "{{ ' neighbor-restart-helper-status-change' if traps.ospfv3.state_change.neighbor_restart_helper_status_change|d(False) else '' }}"
+ "{{ ' neighbor-state-change' if traps.ospfv3.state_change.neighbor_state_change|d(False) else '' }}"
+ "{{ ' nssa-translator-status-change' if traps.ospfv3.state_change.nssa_translator_status_change|d(False) else '' }}"
+ "{{ ' restart-status-change' if traps.ospfv3.state_change.restart_status_change|d(False) else '' }}"
+ "{{ ' virtif-state-change' if traps.ospfv3.state_change.virtif_state_change|d(False) else '' }}"
+ "{{ ' virtneighbor-restart-helper-status-change' if traps.ospfv3.state_change.vn_restart_helper_status_change|d(False) else '' }}"
+ "{{ ' virtneighbor-state-change' if traps.ospfv3.state_change.vn_state_change|d(False) else '' }}",
"result": {
"traps": {
- "firewall": {
- "enable": True,
- "serverstatus": "{{ not not serverstatus }}",
+ "ospfv3": {
+ "state_change": {
+ "enable": True,
+ "if_state_change": "{{ not not if_state_change }}",
+ "neighbor_restart_helper_status_change": "{{ not not neighbor_restart_helper_status_change }}",
+ "neighbor_state_change": "{{ not not neighbor_state_change }}",
+ "nssa_translator_status_change": "{{ not not nssa_translator_status_change }}",
+ "restart_status_change": "{{ not not restart_status_change }}",
+ "virtif_state_change": "{{ not not virtif_state_change }}",
+ "vn_restart_helper_status_change": "{{ not not virtneighbor_restart_helper_status_change }}",
+ "vn_state_change": "{{ not not virtneighbor_state_change }}",
+ },
},
},
},
@@ -1696,28 +2377,126 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
- "name": "traps.vrfmib",
+ "name": "traps.pki",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\svrfmib
- (\s(?P<vrf_up>vrf-up))?
- (\s(?P<vrf_down>vrf-down))?
- (\s(?P<vnet_trunk_up>vnet-trunk-up))?
- (\s(?P<vnet_trunk_down>vnet-trunk-down))?
+ ^snmp-server\senable\straps\spki
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps vrfmib"
- "{{ ' vrf-up' if traps.vrfmib.vrf_up|d(False) else ''}}"
- "{{ ' vrf-down' if traps.vrfmib.vrf_down|d(False) else ''}}"
- "{{ ' vnet-trunk-up' if traps.vrfmib.vnet_trunk_up|d(False) else ''}}"
- "{{ ' vnet-trunk-down' if traps.vrfmib.vnet_trunk_down|d(False) else ''}}",
+ "setval": "snmp-server enable traps pki",
"result": {
"traps": {
- "vrfmib": {
- "vrf_up": "{{ not not vrf_up }}",
- "vrf_down": "{{ not not vrf_down }}",
- "vnet_trunk_up": "{{ not not vnet_trunk_up }}",
- "vnet_trunk_down": "{{ not not vnet_trunk_down }}",
+ "pki": True,
+ },
+ },
+ },
+ {
+ "name": "traps.port_security",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sport-security
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps port-security",
+ "result": {
+ "traps": {
+ "port_security": True,
+ },
+ },
+ },
+ {
+ "name": "traps.power_ethernet",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\spower-ethernet
+ (\s(?P<police>police))?$
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps power-ethernet"
+ "{{ ' police' if traps.power_ethernet.police|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "power_ethernet": {
+ "enable": True,
+ "police": "{{ not not police }}",
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.pw_vc",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\spw\svc$
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps pw vc",
+ "result": {
+ "traps": {
+ "pw_vc": True,
+ },
+ },
+ },
+ {
+ "name": "traps.rep",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\srep
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps rep",
+ "result": {
+ "traps": {
+ "rep": True,
+ },
+ },
+ },
+ {
+ "name": "traps.rsvp",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\srsvp
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps rsvp",
+ "result": {
+ "traps": {
+ "rsvp": True,
+ },
+ },
+ },
+ {
+ "name": "traps.rf",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\srf
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps rf",
+ "result": {
+ "traps": {
+ "rf": True,
+ },
+ },
+ },
+ {
+ "name": "traps.smart_license",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\ssmart-license
+ (\s(?P<entitlement>entitlement))?
+ (\s(?P<global>global))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps smart-license"
+ "{{ ' entitlement' if traps.smart_license.entitlement|d(False) else '' }}"
+ "{{ ' global' if traps.smart_license.global|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "smart_license": {
+ "enable": True,
+ "entitlement": "{{ not not entitlement }}",
+ "global": "{{ not not global }}",
},
},
},
@@ -1738,8 +2517,8 @@ class Snmp_serverTemplate(NetworkTemplate):
"{{ ' authentication' if traps.snmp.authentication is defined else '' }}"
"{{ ' linkdown' if traps.snmp.linkdown|d(False) else ''}}"
"{{ ' linkup' if traps.snmp.linkup|d(False) else ''}}"
- "{{ ' warmstart' if traps.snmp.warmstart|d(False) else ''}}"
- "{{ ' coldstart' if traps.snmp.coldstart|d(False) else ''}}",
+ "{{ ' coldstart' if traps.snmp.coldstart|d(False) else ''}}"
+ "{{ ' warmstart' if traps.snmp.warmstart|d(False) else ''}}",
"result": {
"traps": {
"snmp": {
@@ -1753,202 +2532,381 @@ class Snmp_serverTemplate(NetworkTemplate):
},
},
{
- "name": "traps.frame_relay",
+ "name": "traps.stackwise",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sframe-relay$
+ ^snmp-server\senable\straps\sstackwise
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps frame-relay",
+ "setval": "snmp-server enable traps stackwise",
"result": {
"traps": {
- "frame_relay": {
+ "stackwise": True,
+ },
+ },
+ },
+ {
+ "name": "traps.stpx",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sstpx
+ (\s(?P<inconsistency>inconsistency))?
+ (\s(?P<root_inconsistency>root-inconsistency))?
+ (\s(?P<loop_inconsistency>loop-inconsistency))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps stpx"
+ "{{ ' inconsistency' if traps.stpx.inconsistency|d(False) else '' }}"
+ "{{ ' root-inconsistency' if traps.stpx.root_inconsistency|d(False) else '' }}"
+ "{{ ' loop-inconsistency' if traps.stpx.loop_inconsistency|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "stpx": {
"enable": True,
+ "inconsistency": "{{ not not inconsistency }}",
+ "loop_inconsistency": "{{ not not loop_inconsistency }}",
+ "root_inconsistency": "{{ not not root_inconsistency }}",
},
},
},
},
{
- "name": "traps.frame_relay.subif",
+ "name": "traps.syslog",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sframe-relay\ssubif
- (\scount(?P<count>\d+))?
- (\sinterval(?P<interval>\d+))?
+ ^snmp-server\senable\straps\ssyslog
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps frame-relay subif"
- "{{ (' count ' + count|string) if traps.frame_relay.count else '' }}"
- "{{ (' interval ' + interval|string) if traps.frame_relay.interval else '' }}",
+ "setval": "snmp-server enable traps syslog",
"result": {
"traps": {
- "frame_relay": {
- "subif": {
- "enable": "{{ not not subif }}",
- "interval": "{{ interval }}",
- "count": "{{ count }}",
- },
+ "syslog": True,
+ },
+ },
+ },
+ {
+ "name": "traps.transceiver_all",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\stransceiver\sall
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps transceiver all",
+ "result": {
+ "traps": {
+ "transceiver_all": True,
+ },
+ },
+ },
+ {
+ "name": "traps.trustsec",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\strustsec
+ (?!\S)
+ (\s(?P<authz_file_error>authz-file-error))?
+ (\s(?P<cache_file_error>cache-file-error))?
+ (\s(?P<keystore_file_error>keystore-file-error))?
+ (\s(?P<keystore_sync_fail>keystore-sync-fail))?
+ (\s(?P<random_number_fail>random-number-fail))?
+ (\s(?P<src_entropy_fail>src-entropy-fail))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps trustsec"
+ "{{ ' authz-file-error' if traps.trustsec.authz_file_error|d(False) else '' }}"
+ "{{ ' cache-file-error' if traps.trustsec.cache_file_error|d(False) else '' }}"
+ "{{ ' keystore-file-error' if traps.trustsec.keystore_file_error|d(False) else '' }}"
+ "{{ ' keystore-sync-fail' if traps.trustsec.keystore_sync_fail|d(False) else '' }}"
+ "{{ ' random-number-fail' if traps.trustsec.random_number_fail|d(False) else '' }}"
+ "{{ ' src-entropy-fail' if traps.trustsec.src_entropy_fail|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "trustsec": {
+ "enable": True,
+ "authz_file_error": "{{ not not authz_file_error }}",
+ "cache_file_error": "{{ not not cache_file_error }}",
+ "keystore_file_error": "{{ not not keystore_file_error }}",
+ "keystore_sync_fail": "{{ not not keystore_sync_fail }}",
+ "random_number_fail": "{{ not not random_number_fail }}",
+ "src_entropy_fail": "{{ not not src_entropy_fail }}",
},
},
},
},
{
- "name": "traps.cef",
+ "name": "traps.trustsec_interface",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\scef
- (\s(?P<resource_failure>resource-failure))?
- (\s(?P<peer_state_change>peer-state-change))?
- (\s(?P<peer_fib_state_change>peer-fib-state-change))?
- (\s(?P<inconsistency>inconsistency))?
+ ^snmp-server\senable\straps\strustsec-interface
+ (\s(?P<unauthorized>unauthorized))?
+ (\s(?P<sap_fail>sap-fail))?
+ (\s(?P<authc_fail>authc-fail))?
+ (\s(?P<supplicant_fail>supplicant-fail))?
+ (\s(?P<authz_fail>authz-fail))?
""", re.VERBOSE,
),
- "setval": "{{ 'snmp-server enable traps cef' if traps.cef.enable is defined else '' }}"
- "{{ ' resource-failure' if traps.cef.resource_failure|d(False) else ''}}"
- "{{ ' peer-state-change' if traps.cef.peer_state_change|d(False) else ''}}"
- "{{ ' peer-fib-state-change' if traps.cef.peer_fib_state_change|d(False) else ''}}"
- "{{ ' inconsistency' if traps.cef.inconsistency|d(False) else ''}}",
+ "setval": "snmp-server enable traps trustsec-interface"
+ "{{ ' unauthorized' if traps.trustsec_interface.unauthorized|d(False) else '' }}"
+ "{{ ' sap-fail' if traps.trustsec_interface.sap_fail|d(False) else '' }}"
+ "{{ ' authc-fail' if traps.trustsec_interface.authc_fail|d(False) else '' }}"
+ "{{ ' supplicant-fail' if traps.trustsec_interface.supplicant_fail|d(False) else '' }}"
+ "{{ ' authz-fail' if traps.trustsec_interface.authz_fail|d(False) else '' }}",
"result": {
"traps": {
- "cef": {
+ "trustsec_interface": {
"enable": True,
- "inconsistency": "{{ not not inconsistency }}",
- "peer_fib_state_change": "{{ not not peer_fib_state_change }}",
- "peer_state_change": "{{ not not peer_state_change }}",
- "resource_failure": "{{ not not resource_failure }}",
+ "unauthorized": "{{ not not unauthorized }}",
+ "sap_fail": "{{ not not sap_fail }}",
+ "authc_fail": "{{ not not authc_fail }}",
+ "supplicant_fail": "{{ not not supplicant_fail }}",
+ "authz_fail": "{{ not not authz_fail }}",
},
},
},
},
{
- "name": "traps.dlsw",
+ "name": "traps.trustsec_policy",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sdlsw
- (\s(?P<circuit>circuit))?
- (\s(?P<tconn>tconn))?
+ ^snmp-server\senable\straps\strustsec-policy
+ (\s(?P<peer_policy_updated>peer-policy-updated))?
+ (\s(?P<authz_sgacl_fail>authz-sgacl-fail))?
""", re.VERBOSE,
),
- "setval": "{{ 'snmp-server enable traps dlsw' if traps.dlsw.enable is defined else '' }}"
- "{{ ' circuit' if traps.dlsw.circuit|d(False) else ''}}"
- "{{ ' tconn' if traps.dlsw.tconn|d(False) else ''}}",
+ "setval": "snmp-server enable traps trustsec-policy"
+ "{{ ' peer-policy-updated' if traps.trustsec_policy.peer_policy_updated|d(False) else '' }}"
+ "{{ ' authz-sgacl-fail' if traps.trustsec_policy.authz_sgacl_fail|d(False) else '' }}",
"result": {
"traps": {
- "dlsw": {
+ "trustsec_policy": {
"enable": True,
- "circuit": "{{ not not circuit }}",
- "tconn": "{{ not not tconn }}",
+ "peer_policy_updated": "{{ not not peer_policy_updated }}",
+ "authz_sgacl_fail": "{{ not not authz_sgacl_fail }}",
},
},
},
},
{
- "name": "traps.ethernet.evc",
+ "name": "traps.trustsec_server",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sethernet\sevc
- (\s(?P<status>status))?
- (\s(?P<create>create))?
- (\s(?P<delete>delete))?
+ ^snmp-server\senable\straps\strustsec-server
+ (\s(?P<radius_server>radius-server))?
+ (\s(?P<provision_secret>provision-secret))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ethernet evc"
- "{{ ' create' if traps.ethernet.evc.create|d(False) else ''}}"
- "{{ ' delete' if traps.ethernet.evc.delete|d(False) else ''}}"
- "{{ ' status' if traps.ethernet.evc.status|d(False) else ''}}",
+ "setval": "snmp-server enable traps trustsec-server"
+ "{{ ' radius-server' if traps.trustsec_server.radius_server|d(False) else '' }}"
+ "{{ ' provision-secret' if traps.trustsec_server.provision_secret|d(False) else '' }}",
"result": {
"traps": {
- "ethernet": {
- "evc": {
- "create": "{{ not not create }}",
- "delete": "{{ not not delete }}",
- "status": "{{ not not status }}",
- },
+ "trustsec_server": {
+ "enable": True,
+ "radius_server": "{{ not not radius_server }}",
+ "provision_secret": "{{ not not provision_secret }}",
},
},
},
},
{
- "name": "traps.ethernet.cfm.cc",
+ "name": "traps.trustsec_sxp",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sethernet\scfm\scc
- (\s(?P<mep_up>mep-up))?
- (\s(?P<mep_down>mep-down))?
- (\s(?P<cross_connect>cross-connect))?
- (\s(?P<loop>loop))?
- (\s(?P<config>config))?
+ ^snmp-server\senable\straps\strustsec-sxp
+ (\s(?P<conn_srcaddr_err>conn-srcaddr-err))?
+ (\s(?P<msg_parse_err>msg-parse-err))?
+ (\s(?P<conn_config_err>conn-config-err))?
+ (\s(?P<binding_err>binding-err))?
+ (\s(?P<conn_up>conn-up))?
+ (\s(?P<conn_down>conn-down))?
+ (\s(?P<binding_expn_fail>binding-expn-fail))?
+ (\s(?P<oper_nodeid_change>oper-nodeid-change))?
+ (\s(?P<binding_conflict>binding-conflict))?
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ethernet cfm cc"
- "{{ ' mep-up' if traps.ethernet.cfm.cc.mep_up|d(False) else ''}}"
- "{{ ' mep-down' if traps.ethernet.cfm.cc.mep_down|d(False) else ''}}"
- "{{ ' cross-connect' if traps.ethernet.cfm.cc.cross_connect|d(False) else ''}}"
- "{{ ' loop' if traps.ethernet.cfm.cc.loop|d(False) else ''}}"
- "{{ ' config' if traps.ethernet.cfm.cc.config|d(False) else ''}}",
+ "setval": "snmp-server enable traps trustsec-sxp"
+ "{{ ' conn-srcaddr-err' if traps.trustsec_sxp.conn_srcaddr_err|d(False) else '' }}"
+ "{{ ' msg-parse-err' if traps.trustsec_sxp.msg_parse_err|d(False) else '' }}"
+ "{{ ' conn-config-err' if traps.trustsec_sxp.conn_config_err|d(False) else '' }}"
+ "{{ ' binding-err' if traps.trustsec_sxp.binding_err|d(False) else '' }}"
+ "{{ ' conn-up' if traps.trustsec_sxp.conn_up|d(False) else '' }}"
+ "{{ ' conn-down' if traps.trustsec_sxp.conn_down|d(False) else '' }}"
+ "{{ ' binding-expn-fail' if traps.trustsec_sxp.binding_expn_fail|d(False) else '' }}"
+ "{{ ' oper-nodeid-change' if traps.trustsec_sxp.oper_nodeid_change|d(False) else '' }}"
+ "{{ ' binding-conflict' if traps.trustsec_sxp.binding_conflict|d(False) else '' }}",
"result": {
"traps": {
- "ethernet": {
- "cfm": {
- "cc": {
- "mep_up": "{{ not not mep_up }}",
- "mep_down": "{{ not not mep_down }}",
- "cross_connect": "{{ not not cross_connect }}",
- "loop": "{{ not not loop }}",
- "config": "{{ not not config }}",
- },
- },
+ "trustsec_sxp": {
+ "enable": True,
+ "conn_srcaddr_err": "{{ not not conn_srcaddr_err }}",
+ "msg_parse_err": "{{ not not msg_parse_err }}",
+ "conn_config_err": "{{ not not conn_config_err }}",
+ "binding_err": "{{ not not binding_err }}",
+ "conn_up": "{{ not not conn_up }}",
+ "conn_down": "{{ not not conn_down }}",
+ "binding_expn_fail": "{{ not not binding_expn_fail }}",
+ "oper_nodeid_change": "{{ not not oper_nodeid_change }}",
+ "binding_conflict": "{{ not not binding_conflict }}",
},
},
},
},
{
- "name": "traps.ethernet.cfm.crosscheck",
+ "name": "traps.tty",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sethernet\scfm\scrosscheck
- (\s(?P<mep_missing>mep-missing))?
- (\s(?P<mep_unknown>mep-unknown))?
- (\s(?P<service_up>service-up))?
+ ^snmp-server\senable\straps\stty
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ethernet cfm crosscheck"
- "{{ ' mep-missing' if traps.ethernet.cfm.crosscheck.mep_missing|d(False) else ''}}"
- "{{ ' mep-unknown' if traps.ethernet.cfm.crosscheck.mep_unknown|d(False) else ''}}"
- "{{ ' service-up' if traps.ethernet.cfm.crosscheck.service_up|d(False) else ''}}",
+ "setval": "snmp-server enable traps tty",
"result": {
"traps": {
- "ethernet": {
- "cfm": {
- "crosscheck": {
- "mep_missing": "{{ not not mep_missing }}",
- "mep_unknown": "{{ not not mep_unknown }}",
- "service_up": "{{ not not service_up }}",
- },
- },
+ "tty": True,
+ },
+ },
+ },
+ {
+ "name": "traps.udld",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\sudld
+ (\s(?P<link_fail_rpt>link-fail-rpt))?
+ (\s(?P<status_change>status-change))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps udld"
+ "{{ ' link-fail-rpt' if traps.udld.link_fail_rpt|d(False) else '' }}"
+ "{{ ' status-change' if traps.udld.status_change|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "udld": {
+ "enable": True,
+ "link_fail_rpt": "{{ not not link_fail_rpt }}",
+ "status_change": "{{ not not status_change }}",
},
},
},
},
{
- "name": "traps.ethernet.cfm.alarm",
+ "name": "traps.vlan_membership",
"getval": re.compile(
r"""
- ^snmp-server\senable\straps\sethernet\scfm\salarm
+ ^snmp-server\senable\straps\svlan-membership
""", re.VERBOSE,
),
- "setval": "snmp-server enable traps ethernet cfm alarm",
+ "setval": "snmp-server enable traps vlan-membership",
"result": {
"traps": {
- "ethernet": {
- "cfm": {
- "alarm": True,
- },
+ "vlan_membership": True,
+ },
+ },
+ },
+ {
+ "name": "traps.vlancreate",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\svlancreate
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps vlancreate",
+ "result": {
+ "traps": {
+ "vlancreate": True,
+ },
+ },
+ },
+ {
+ "name": "traps.vlandelete",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\svlandelete
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps vlandelete",
+ "result": {
+ "traps": {
+ "vlandelete": True,
+ },
+ },
+ },
+ {
+ "name": "traps.vrfmib",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\svrfmib
+ (\s(?P<vrf_up>vrf-up))?
+ (\s(?P<vrf_down>vrf-down))?
+ (\s(?P<vnet_trunk_up>vnet-trunk-up))?
+ (\s(?P<vnet_trunk_down>vnet-trunk-down))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps vrfmib"
+ "{{ ' vrf-up' if traps.vrfmib.vrf_up|d(False) else ''}}"
+ "{{ ' vrf-down' if traps.vrfmib.vrf_down|d(False) else ''}}"
+ "{{ ' vnet-trunk-up' if traps.vrfmib.vnet_trunk_up|d(False) else ''}}"
+ "{{ ' vnet-trunk-down' if traps.vrfmib.vnet_trunk_down|d(False) else ''}}",
+ "result": {
+ "traps": {
+ "vrfmib": {
+ "vrf_up": "{{ not not vrf_up }}",
+ "vrf_down": "{{ not not vrf_down }}",
+ "vnet_trunk_up": "{{ not not vnet_trunk_up }}",
+ "vnet_trunk_down": "{{ not not vnet_trunk_down }}",
},
},
},
},
{
+ "name": "traps.vrrp",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\svrrp
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps vrrp",
+ "result": {
+ "traps": {
+ "vrrp": True,
+ },
+ },
+ },
+ {
+ "name": "traps.vswitch",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\svswitch
+ (\s(?P<dual_active>dual-active))?
+ (\s(?P<vsl>vsl))?
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps vswitch"
+ "{{ ' dual-active' if traps.vswitch.dual_active|d(False) else '' }}"
+ "{{ ' vsl' if traps.vswitch.vsl|d(False) else '' }}",
+ "result": {
+ "traps": {
+ "vswitch": {
+ "enable": True,
+ "dual_active": "{{ not not dual_active }}",
+ "vsl": "{{ not not vsl }}",
+ },
+ },
+ },
+ },
+ {
+ "name": "traps.vtp",
+ "getval": re.compile(
+ r"""
+ ^snmp-server\senable\straps\svtp
+ """, re.VERBOSE,
+ ),
+ "setval": "snmp-server enable traps vtp",
+ "result": {
+ "traps": {
+ "vtp": True,
+ },
+ },
+ },
+ {
"name": "system_shutdown",
"getval": re.compile(
r"""
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/static_routes.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/static_routes.py
index 790f0c8df..a43d59cf7 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/static_routes.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/static_routes.py
@@ -37,7 +37,7 @@ class Static_routesTemplate(NetworkTemplate):
(\svrf\s(?P<vrf>\S+))?
(\s(?P<dest>\S+))
(\s(?P<netmask>\S+))
- (\s(?P<interface>(ACR|ATM-ACR|Analysis-Module|AppNav-Compress|AppNav-UnCompress|Async|Auto-Template|BD-VIF|BDI|BVI|Bluetooth|CDMA-Ix|CEM-ACR|CEM-PG|CTunnel|Container|Dialer|EsconPhy|Ethernet-Internal|Fcpa|Filter|Filtergroup|GigabitEthernet|IMA-ACR|LongReachEthernet|Loopback|Lspvif|MFR|Multilink|NVI|Null|PROTECTION_GROUP|Port-channel|Portgroup|Pos-channel|SBC|SDH_ACR|SERIAL-ACR|SONET_ACR|SSLVPN-VIF|SYSCLOCK|Serial-PG|Service-Engine|TLS-VIF|Tunnel|VPN|Vif|Vir-cem-ACR|Virtual-PPP|Virtual-TokenRing)\d+))?
+ (\s(?P<interface>(ACR|ATM-ACR|Analysis-Module|AppNav-Compress|AppNav-UnCompress|Async|Auto-Template|BD-VIF|BDI|BVI|Bluetooth|CDMA-Ix|CEM-ACR|CEM-PG|CTunnel|Container|Dialer|EsconPhy|Ethernet-Internal|Fcpa|Filter|Filtergroup|GigabitEthernet|IMA-ACR|LongReachEthernet|Loopback|Lspvif|MFR|Multilink|NVI|Null|PROTECTION_GROUP|Port-channel|Portgroup|Pos-channel|SBC|SDH_ACR|SERIAL-ACR|SONET_ACR|SSLVPN-VIF|SYSCLOCK|Serial-PG|Service-Engine|TLS-VIF|Tunnel|VPN|Vif|Vir-cem-ACR|Virtual-PPP|Virtual-TokenRing)\S+))?
(\s(?P<forward_router_address>(?!multicast|dhcp|global|tag|track|permanent|name)\S+))?
(\s(?P<distance_metric>\d+))?
(\stag\s(?P<tag>\d+))?
@@ -93,7 +93,7 @@ class Static_routesTemplate(NetworkTemplate):
(\stopology\s(?P<topology>\S+))?
(\svrf\s(?P<vrf>\S+))?
(\s(?P<dest>\S+))
- (\s(?P<interface>(ACR|ATM-ACR|Analysis-Module|AppNav-Compress|AppNav-UnCompress|Async|Auto-Template|BD-VIF|BDI|BVI|Bluetooth|CDMA-Ix|CEM-ACR|CEM-PG|CTunnel|Container|Dialer|EsconPhy|Ethernet-Internal|Fcpa|Filter|Filtergroup|GigabitEthernet|IMA-ACR|LongReachEthernet|Loopback|Lspvif|MFR|Multilink|NVI|Null|PROTECTION_GROUP|Port-channel|Portgroup|Pos-channel|SBC|SDH_ACR|SERIAL-ACR|SONET_ACR|SSLVPN-VIF|SYSCLOCK|Serial-PG|Service-Engine|TLS-VIF|Tunnel|VPN|Vif|Vir-cem-ACR|Virtual-PPP|Virtual-TokenRing)\d+))?
+ (\s(?P<interface>(ACR|ATM-ACR|Analysis-Module|AppNav-Compress|AppNav-UnCompress|Async|Auto-Template|BD-VIF|BDI|BVI|Bluetooth|CDMA-Ix|CEM-ACR|CEM-PG|CTunnel|Container|Dialer|EsconPhy|Ethernet-Internal|Fcpa|Filter|Filtergroup|GigabitEthernet|IMA-ACR|LongReachEthernet|Loopback|Lspvif|MFR|Multilink|NVI|Null|PROTECTION_GROUP|Port-channel|Portgroup|Pos-channel|SBC|SDH_ACR|SERIAL-ACR|SONET_ACR|SSLVPN-VIF|SYSCLOCK|Serial-PG|Service-Engine|TLS-VIF|Tunnel|VPN|Vif|Vir-cem-ACR|Virtual-PPP|Virtual-TokenRing)\S+))?
(\s(?P<forward_router_address>(?!multicast|unicast|tag|track|permanent|name)\S+))?
(\s(?P<distance_metric>\d+))?
(\s(?P<multicast>multicast))?
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/vxlan_vtep.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/vxlan_vtep.py
new file mode 100644
index 000000000..ed9517b17
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/vxlan_vtep.py
@@ -0,0 +1,131 @@
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+"""
+The Vxlan_vtep parser templates file. This contains
+a list of parser definitions and associated functions that
+facilitates both facts gathering and native command generation for
+the given network resource.
+"""
+
+import re
+
+from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import (
+ NetworkTemplate,
+)
+
+
+class Vxlan_vtepTemplate(NetworkTemplate):
+ def __init__(self, lines=None, module=None):
+ super(Vxlan_vtepTemplate, self).__init__(lines=lines, tmplt=self, module=module)
+
+ # fmt: off
+ PARSERS = [
+ {
+ "name": "interface",
+ "getval": re.compile(
+ r"""^interface\s(?P<interface>\S+)$""",
+ re.VERBOSE,
+ ),
+ "setval": "interface {{ interface }}",
+ "result": {"{{ interface }}": {"interface": "{{ interface }}"}},
+ "shared": True,
+ },
+ {
+ "name": "source_interface",
+ "getval": re.compile(
+ r"""\s+source-interface
+ \s(?P<source_interface>\S+)
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "source-interface {{ source_interface }}",
+ "result": {"{{ interface }}": {"source_interface": "{{ source_interface }}"}},
+ },
+ {
+ "name": "host_reachability_bgp",
+ "getval": re.compile(
+ r"""\s+host-reachability\sprotocol\sbgp$""",
+ re.VERBOSE,
+ ),
+ "setval": "host-reachability protocol bgp",
+ "result": {
+ "{{ interface }}": {
+ "host_reachability_bgp": True,
+ },
+ },
+ },
+ # member vni starts
+ {
+ "name": "replication",
+ "getval": re.compile(
+ r"""
+ \s+member\svni\s(?P<vni>\d+)\s(?P<type>mcast-group|ingress-replication)
+ (\s(?P<ipv4_mcast_group>[\d.]+))?
+ (\s(?P<ipv6_mcast_group>[\da-fA-F:]+))?
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "member vni {{ vni }}"
+ "{{ (' ' + 'ingress-replication') if replication.type == 'ingress' else (' ' + 'mcast-group') }}"
+ "{{ (' ' + replication.mcast_group.ipv4) if replication.mcast_group is defined and "
+ "replication.mcast_group.ipv4 is defined and replication.type == 'static' else '' }}"
+ "{{ (' ' + replication.mcast_group.ipv6) if replication.mcast_group is defined and "
+ "replication.mcast_group.ipv6 is defined and replication.type == 'static' else '' }}",
+ "result": {
+ "{{ interface }}": {
+ "member": {
+ "vni": {
+ "l2vni": [
+ {
+ "vni": "{{ vni }}",
+ "replication": {
+ "type": "{{ 'ingress' if type == 'ingress-replication' else 'static' }}",
+ "mcast_group": {
+ "ipv4": "{{ ipv4_mcast_group }}",
+ "ipv6": "{{ ipv6_mcast_group }}",
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ "name": "vrf",
+ "getval": re.compile(
+ r"""
+ \s+member\svni
+ \s(?P<vni>\d+)
+ \svrf\s(?P<vrf>\S+)
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "member vni {{ vni }} vrf {{ vrf }}",
+ "result": {
+ "{{ interface }}": {
+ "member": {
+ "vni": {
+ "l3vni": [
+ {
+ "vni": "{{ vni }}",
+ "vrf": "{{ vrf }}",
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ # member vni ends
+ ]
+ # fmt: on
diff --git a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/utils/utils.py b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/utils/utils.py
index 80b4b084d..f3038f7f2 100644
--- a/ansible_collections/cisco/ios/plugins/module_utils/network/ios/utils/utils.py
+++ b/ansible_collections/cisco/ios/plugins/module_utils/network/ios/utils/utils.py
@@ -77,7 +77,7 @@ def new_dict_to_set(input_dict, temp_list, test_set, count=0):
temp_list.append(k)
for each in v:
if isinstance(each, dict):
- if [True for i in each.values() if type(i) == list]:
+ if [True for i in each.values() if isinstance(i, list)]:
new_dict_to_set(each, temp_list, test_set, count)
else:
new_dict_to_set(each, temp_list, test_set, 0)
@@ -105,9 +105,12 @@ def new_dict_to_set(input_dict, temp_list, test_set, count=0):
expand_dict(new_dict)
if tuple(iteritems(temp_dict)) not in test_set:
test_set.add(tuple(iteritems(temp_dict)))
+ return test_dict
-def dict_to_set(sample_dict):
+def dict_to_set(sample_dict, sort_dictionary=False):
+ if sort_dictionary:
+ sample_dict = sort_dict(sample_dict)
# Generate a set with passed dictionary for comparison
test_dict = dict()
if isinstance(sample_dict, dict):
@@ -421,3 +424,13 @@ def vlan_range_to_list(vlans):
result.append(a)
return numerical_sort(result)
return result
+
+
+def sort_dict(dictionary):
+ sorted_dict = dict()
+ for key, value in sorted(dictionary.items()):
+ if isinstance(value, dict):
+ sorted_dict[key] = sort_dict(value)
+ else:
+ sorted_dict[key] = value
+ return sorted_dict
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_acl_interfaces.py b/ansible_collections/cisco/ios/plugins/modules/ios_acl_interfaces.py
index dfdc08528..a67de7274 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_acl_interfaces.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_acl_interfaces.py
@@ -325,7 +325,7 @@ EXAMPLES = """
# 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)"
+# "(NOTE: This will delete all of configured resource module attributes from each configured interface)"
# Before state:
# -------------
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_acls.py b/ansible_collections/cisco/ios/plugins/modules/ios_acls.py
index 00c5b563c..f81e0e7ab 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_acls.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_acls.py
@@ -463,7 +463,14 @@ options:
type: bool
type: dict
remarks:
- description: The remarks/description of the ACL.
+ description:
+ - The remarks/description of the ACL.
+ - The remarks attribute used within an ace with or without a
+ sequence number will produce remarks that are pushed
+ before the ace entry.
+ - Remarks entry used as the only key in as the list option
+ will produce non ace specific remarks, these remarks would be
+ pushed at the end of all the aces for an acl.
elements: str
type: list
sequence:
@@ -633,8 +640,9 @@ options:
and transforms it into JSON format as per the resource module parameters
and the value is returned in the I(parsed) key within the result. The
value of C(running_config) option should be the same format as the output
- of commands I(show access-list) and
- I(show running-config | include ip(v6)* access-list|remark) executed on
+ of commands I(sh running-config | section access-list) for all acls related information
+ and I(sh access-lists | include access list) to obtain configuration specific of
+ an empty acls, the following commands are executed on
device. Config data from both the commands should be kept together one after
another for the parsers to pick the commands correctly.
For state I(parsed) active connection to remote host is not required.
@@ -653,35 +661,8 @@ EXAMPLES = """
# Before state:
# -------------
#
-# vios#sh access-lists
-# Extended IP access list 100
-# 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: 100
- aces:
- - sequence: 10
- protocol_options:
- icmp:
- traceroute: true
- state: merged
-
-# After state:
-# ------------
-#
-# Play Execution fails, with error:
-# Cannot update existing sequence 10 of ACLs 100 with state merged.
-# Please use state replaced or overridden.
-
-# Before state:
-# -------------
-#
-# vios#sh access-lists
-# Extended IP access list 110
+# vios#sh running-config | section access-list
+# ip access-list extended 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
@@ -705,6 +686,12 @@ EXAMPLES = """
protocol_options:
icmp:
traceroute: true
+ source:
+ address: 192.168.3.0
+ wildcard_bits: 255.255.255.0
+ destination:
+ any: true
+ grant: permit
- grant: deny
protocol_options:
tcp:
@@ -715,7 +702,7 @@ EXAMPLES = """
host: 198.51.110.0
port_protocol:
eq: telnet
- - name: test
+ - name: extended_acl_1
acl_type: extended
aces:
- grant: deny
@@ -787,64 +774,259 @@ EXAMPLES = """
dscp: af11
state: merged
-# Commands fired:
-# ---------------
+# Task Output
+# -----------
#
-# - 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
-# - 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
-# - remark remarks for extended ACL 1
-# - remark check ACL
-# - ipv6 access-list R1_TRAFFIC
-# - deny tcp any eq www any eq telnet ack dscp af11
+# before:
+# - acls:
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: icmp
+# 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: '100'
+# afi: ipv4
+# commands:
+# - ip access-list extended 110
+# - deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack
+# - 30 permit icmp 192.168.3.0 255.255.255.0 any traceroute
+# - ip access-list extended extended_acl_1
+# - 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 standard std_acl
+# - deny 192.168.1.20
+# - deny 192.168.2.0 0.0.0.255
+# - 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
+# - remark remarks for extended ACL 1
+# - remark check ACL
+# - ipv6 access-list R1_TRAFFIC
+# - deny tcp any eq www any eq telnet ack dscp af11
+# after:
+# - acls:
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: icmp
+# protocol_options:
+# icmp:
+# echo: true
+# sequence: 10
+# source:
+# address: 192.0.2.0
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# - destination:
+# host: 198.51.110.0
+# port_protocol:
+# eq: telnet
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 20
+# source:
+# host: 198.51.100.0
+# - destination:
+# any: true
+# grant: permit
+# protocol: icmp
+# protocol_options:
+# icmp:
+# traceroute: true
+# sequence: 30
+# source:
+# address: 0.0.0.0
+# wildcard_bits: 255.255.255.0
+# 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: tcp
+# 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: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 20
+# source:
+# address: 192.0.3.0
+# wildcard_bits: 0.0.0.255
+# ttl:
+# lt: 20
+# - remarks:
+# - remarks for extended ACL 1
+# - check ACL
+# 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: tcp
+# 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: extended_acl_1
+# - aces:
+# - grant: deny
+# sequence: 10
+# source:
+# host: 192.168.1.20
+# - grant: deny
+# sequence: 20
+# source:
+# address: 192.168.2.0
+# wildcard_bits: 0.0.0.255
+# acl_type: standard
+# name: std_acl
+# afi: ipv4
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# port_protocol:
+# eq: telnet
+# dscp: af11
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 10
+# source:
+# any: true
+# port_protocol:
+# eq: www
+# name: R1_TRAFFIC
+# afi: ipv6
# After state:
# ------------
#
-# vios#sh access-lists
-# Standard IP access list std_acl
+# vios#sh running-config | section access-list
+# ip access-list standard std_acl
# 10 deny 192.168.1.200
-# 20 deny 192.168.2.0, wildcard bits 0.0.0.255
-# Extended IP access list 100
+# 20 deny 192.168.2.0 0.0.0.255
+# ip access-list extended 100
# 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
-# Extended IP access list 110
+# ip access-list extended 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
+# ip access-list extended 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
+# ip access-list extended 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
+# ipv6 access-list R1_TRAFFIC
+# sequence 10 deny tcp any eq www any eq telnet ack dscp af11
+
+# vios#show running-config | include ip(v6)* access-list|remark
+# ip access-list standard std_acl
+# ip access-list extended extended_acl_1
+# ip access-list extended 110
+# ip access-list extended 123
+# remark remarks for extended ACL 1
+# remark check ACL
+# ipv6 access-list R1_TRAFFIC
+
+# Using merged (update existing ACE - will fail)
+
+# Before state:
+# -------------
+#
+# vios#sh running-config | section access-list
+# ip access-list extended 100
+# 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: 100
+ aces:
+ - sequence: 10
+ protocol_options:
+ icmp:
+ traceroute: true
+ state: merged
+
+# After state:
+# ------------
+#
+# Play Execution fails, with error:
+# Cannot update existing sequence 10 of ACLs 100 with state merged.
+# Please use state replaced or overridden.
# 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
+# vios#sh running-config | section access-list
+# ip access-list standard std_acl
+# 10 deny 192.168.1.200
+# 20 deny 192.168.2.0 0.0.0.255
+# ip access-list extended 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
+# ip access-list extended 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
+# ip access-list extended R1_TRAFFIC
+# 10 deny tcp any eq www any eq telnet ack dscp af11
+# ip access-list extended 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
- name: Replaces device configuration of listed acls with provided configuration
cisco.ios.ios_acls:
@@ -890,33 +1072,619 @@ EXAMPLES = """
eq: 10
state: replaced
-# Commands fired:
-# ---------------
+# Task Output
+# -----------
#
-# - 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
+# before:
+# - acls:
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: icmp
+# protocol_options:
+# icmp:
+# traceroute: true
+# sequence: 10
+# source:
+# address: 192.0.2.0
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# - destination:
+# host: 198.51.110.0
+# port_protocol:
+# eq: telnet
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 20
+# source:
+# host: 198.51.100.0
+# 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: tcp
+# 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: tcp
+# 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:
+# any: true
+# port_protocol:
+# eq: telnet
+# dscp: af11
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 10
+# source:
+# any: true
+# port_protocol:
+# eq: www
+# acl_type: extended
+# name: R1_TRAFFIC
+# - aces:
+# - grant: deny
+# sequence: 10
+# source:
+# host: 192.168.1.200
+# - grant: deny
+# sequence: 20
+# source:
+# address: 192.168.2.0
+# wildcard_bits: 0.0.0.255
+# acl_type: standard
+# name: std_acl
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# port_protocol:
+# eq: www
+# wildcard_bits: 0.0.0.255
+# grant: deny
+# option:
+# traceroute: true
+# protocol: tcp
+# 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
+# afi: ipv4
+# commands:
+# - ip access-list extended 110
+# - no 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
+# - no 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack
+# - 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:
+# - acls:
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# port_protocol:
+# eq: www
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# syn: 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: tcp
+# 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: tcp
+# 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: 198.51.110.0
+# port_protocol:
+# eq: telnet
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# syn: true
+# sequence: 20
+# source:
+# address: 198.51.100.0
+# port_protocol:
+# eq: telnet
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# acl_type: extended
+# name: '150'
+# - aces:
+# - destination:
+# any: true
+# port_protocol:
+# eq: telnet
+# dscp: af11
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 10
+# source:
+# any: true
+# port_protocol:
+# eq: www
+# acl_type: extended
+# name: R1_TRAFFIC
+# - aces:
+# - grant: deny
+# sequence: 10
+# source:
+# host: 192.168.1.200
+# - grant: deny
+# sequence: 20
+# source:
+# address: 192.168.2.0
+# wildcard_bits: 0.0.0.255
+# acl_type: standard
+# name: std_acl
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# port_protocol:
+# eq: www
+# wildcard_bits: 0.0.0.255
+# grant: deny
+# option:
+# traceroute: true
+# protocol: tcp
+# 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
+# afi: ipv4
# After state:
# -------------
#
# vios#sh access-lists
-# Standard IP access list std_acl
+# ip access-list standard 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
+# 20 deny 192.168.2.0 0.0.0.255
+# 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
-# Extended IP access list 123
+# ip access-list extended 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
+# 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
-# Extended IP access list test
+# ip access-list extended 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
+# ipv6 access-list R1_TRAFFIC
+# sequence 10 deny tcp any eq www any eq telnet ack dscp af11
+
+# Using replaced - example remarks specific
+
+# Before state:
+# -------------
+#
+# vios#show running-config | section access-list
+# ip access-list extended TEST
+# 10 remark FIRST REMARK BEFORE LINE 10
+# 10 remark ============
+# 10 remark ALLOW HOST FROM TEST 10
+# 10 permit ip host 1.1.1.1 any
+# 20 remark FIRST REMARK BEFORE LINE 20
+# 20 remark ============
+# 20 remark ALLOW HOST remarks AFTER LINE 20
+# 20 permit ip host 2.2.2.2 any
+# 30 remark FIRST REMARK BEFORE LINE 30
+# 30 remark ============
+# 30 remark ALLOW HOST remarks AFTER LINE 30
+# 30 permit ip host 3.3.3.3 any
+
+- name: Replace remarks of ace with sequence 10
+ # check_mode: true
+ cisco.ios.ios_acls:
+ state: replaced
+ config:
+ - acls:
+ - aces:
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - The new first remarks before 10
+ - ============new
+ - The new second remarks before 10
+ sequence: 10
+ source:
+ host: 1.1.1.1
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 20
+ - ============
+ - ALLOW HOST remarks AFTER LINE 20
+ sequence: 20
+ source:
+ host: 2.2.2.2
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 30
+ - ============
+ - ALLOW HOST remarks AFTER LINE 30
+ sequence: 30
+ source:
+ host: 3.3.3.3
+ acl_type: extended
+ name: TEST
+ afi: ipv4
+
+# Task Output
+# -----------
+#
+# before:
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - FIRST REMARK BEFORE LINE 10
+# - ===========1=
+# - ALLOW HOST FROM TEST 10
+# sequence: 10
+# source:
+# host: 1.1.1.1
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - FIRST REMARK BEFORE LINE 20
+# - ============
+# - ALLOW HOST remarks AFTER LINE 20
+# sequence: 20
+# source:
+# host: 2.2.2.2
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - FIRST REMARK BEFORE LINE 30
+# - ============
+# - ALLOW HOST remarks AFTER LINE 30
+# sequence: 30
+# source:
+# host: 3.3.3.3
+# acl_type: extended
+# name: TEST
+# afi: ipv4
+# commands:
+# - ip access-list extended TEST
+# - no 10 remark
+# - 10 remark The new first remarks before 10
+# - 10 remark ============new
+# - 10 remark The new second remarks before 10
+# after:
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - The new first remarks before 10
+# - ============new
+# - The new second remarks before 10
+# sequence: 10
+# source:
+# host: 1.1.1.1
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - FIRST REMARK BEFORE LINE 20
+# - ============
+# - ALLOW HOST remarks AFTER LINE 20
+# sequence: 20
+# source:
+# host: 2.2.2.2
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - FIRST REMARK BEFORE LINE 30
+# - ============
+# - ALLOW HOST remarks AFTER LINE 30
+# sequence: 30
+# source:
+# host: 3.3.3.3
+# acl_type: extended
+# name: TEST
+# afi: ipv4
+
+# After state:
+# -------------
+#
+# foo#show running-config | section access-list
+# ip access-list extended TEST
+# 10 remark The new first remarks before 10
+# 10 remark ============new
+# 10 remark The new second remarks before 10
+# 10 permit ip host 1.1.1.1 any
+# 20 remark FIRST REMARK BEFORE LINE 20
+# 20 remark ============
+# 20 remark ALLOW HOST remarks AFTER LINE 20
+# 20 permit ip host 2.2.2.2 any
+# 30 remark FIRST REMARK BEFORE LINE 30
+# 30 remark ============
+# 30 remark ALLOW HOST remarks AFTER LINE 30
+# 30 permit ip host 3.3.3.3 any
+
+# Using replaced - example remarks specific on targeted sequence
+
+# Before state:
+# -------------
+#
+# vios#show running-config | section access-list
+# ip access-list extended TEST
+# 10 permit ip host 1.1.1.1 any
+# 20 remark FIRST REMARK BEFORE LINE 20
+# 20 remark ============
+# 20 remark ALLOW HOST remarks AFTER LINE 20
+# 20 permit ip host 2.2.2.2 any
+# 30 remark FIRST REMARK BEFORE LINE 30
+# 30 remark ============
+# 30 remark ALLOW HOST remarks AFTER LINE 30
+# 30 permit ip host 3.3.3.3 any
+
+- name: Replace remarks of ace with sequence 10
+ # check_mode: true
+ cisco.ios.ios_acls:
+ state: replaced
+ config:
+ - acls:
+ - aces:
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - The new first remarks before 10
+ - ============new
+ - The new second remarks before 10
+ sequence: 10
+ source:
+ host: 1.1.1.1
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 20
+ - ============
+ - ALLOW HOST remarks AFTER LINE 20
+ sequence: 20
+ source:
+ host: 2.2.2.2
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 30
+ - ============
+ - ALLOW HOST remarks AFTER LINE 30
+ sequence: 30
+ source:
+ host: 3.3.3.3
+ acl_type: extended
+ name: TEST
+ afi: ipv4
+
+# Task Output
+# -----------
+#
+# before:
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# sequence: 10
+# source:
+# host: 1.1.1.1
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - FIRST REMARK BEFORE LINE 20
+# - ============
+# - ALLOW HOST remarks AFTER LINE 20
+# sequence: 20
+# source:
+# host: 2.2.2.2
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - FIRST REMARK BEFORE LINE 30
+# - ============
+# - ALLOW HOST remarks AFTER LINE 30
+# sequence: 30
+# source:
+# host: 3.3.3.3
+# acl_type: extended
+# name: TEST
+# afi: ipv4
+# commands:
+# - ip access-list extended TEST
+# - 10 remark The new first remarks before 10
+# - 10 remark ============new
+# - 10 remark The new second remarks before 10
+# after:
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - The new first remarks before 10
+# - ============new
+# - The new second remarks before 10
+# sequence: 10
+# source:
+# host: 1.1.1.1
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - FIRST REMARK BEFORE LINE 20
+# - ============
+# - ALLOW HOST remarks AFTER LINE 20
+# sequence: 20
+# source:
+# host: 2.2.2.2
+# - destination:
+# any: true
+# grant: permit
+# protocol: ip
+# remarks:
+# - FIRST REMARK BEFORE LINE 30
+# - ============
+# - ALLOW HOST remarks AFTER LINE 30
+# sequence: 30
+# source:
+# host: 3.3.3.3
+# acl_type: extended
+# name: TEST
+# afi: ipv4
+
+# After state:
+# -------------
+#
+# foo#show running-config | section access-list
+# ip access-list extended TEST
+# 10 remark The new first remarks before 10
+# 10 remark ============new
+# 10 remark The new second remarks before 10
+# 10 permit ip host 1.1.1.1 any
+# 20 remark FIRST REMARK BEFORE LINE 20
+# 20 remark ============
+# 20 remark ALLOW HOST remarks AFTER LINE 20
+# 20 permit ip host 2.2.2.2 any
+# 30 remark FIRST REMARK BEFORE LINE 30
+# 30 remark ============
+# 30 remark ALLOW HOST remarks AFTER LINE 30
+# 30 permit ip host 3.3.3.3 any
# Using overridden
@@ -924,19 +1692,19 @@ EXAMPLES = """
# -------------
#
# 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
+# ip access-list standard std_acl
+# 10 deny 192.168.1.200
+# 20 deny 192.168.2.0 0.0.0.255
+# ip access-list extended 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
+# ip access-list extended 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
+# ip access-list extended R1_TRAFFIC
+# 10 deny tcp any eq www any eq telnet ack dscp af11
+# ip access-list extended 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
- name: Override device configuration of all acls with provided configuration
cisco.ios.ios_acls:
@@ -985,97 +1753,416 @@ EXAMPLES = """
eq: 10
state: overridden
-# Commands fired:
-# ---------------
+# Task Output
+# -----------
#
-# - 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
+# before:
+# - acls:
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: icmp
+# protocol_options:
+# icmp:
+# traceroute: true
+# sequence: 10
+# source:
+# address: 192.0.2.0
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# - destination:
+# host: 198.51.110.0
+# port_protocol:
+# eq: telnet
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 20
+# source:
+# host: 198.51.100.0
+# 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: tcp
+# 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: tcp
+# 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:
+# any: true
+# port_protocol:
+# eq: telnet
+# dscp: af11
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 10
+# source:
+# any: true
+# port_protocol:
+# eq: www
+# acl_type: extended
+# name: R1_TRAFFIC
+# - aces:
+# - grant: deny
+# sequence: 10
+# source:
+# host: 192.168.1.200
+# - grant: deny
+# sequence: 20
+# source:
+# address: 192.168.2.0
+# wildcard_bits: 0.0.0.255
+# acl_type: standard
+# name: std_acl
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# port_protocol:
+# eq: www
+# wildcard_bits: 0.0.0.255
+# grant: deny
+# option:
+# traceroute: true
+# protocol: tcp
+# 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
+# afi: ipv4
+# commands:
+# - ip access-list extended 110
+# - no 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack
+# - no 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 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
+# - 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
+# - no ip access-list extended 123
+# - no ip access-list extended R1_TRAFFIC
+# - no ip access-list standard std_acl
+# - no ip access-list extended test
+# after:
+# - acls:
+# - aces:
+# - destination:
+# address: 198.51.110.0
+# port_protocol:
+# eq: www
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 20
+# source:
+# address: 198.51.100.0
+# port_protocol:
+# eq: telnet
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# acl_type: extended
+# name: '110'
+# - aces:
+# - destination:
+# address: 198.51.110.0
+# port_protocol:
+# eq: telnet
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# syn: true
+# sequence: 10
+# source:
+# address: 198.51.100.0
+# port_protocol:
+# eq: telnet
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# acl_type: extended
+# name: '150'
+# afi: ipv4
# 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
+# vios#sh running-config | section access-list
+# 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
+# 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
+
-# Using Deleted
+# Using deleted - delete ACL(s)
# 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
+# ip access-list standard std_acl
+# 10 deny 192.168.1.200
+# 20 deny 192.168.2.0 0.0.0.255
+# ip access-list extended 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
+# ip access-list extended 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
+# ip access-list extended extended_acl_1
+# 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
- name: "Delete ACLs (Note: This won't delete the all configured ACLs)"
cisco.ios.ios_acls:
config:
- afi: ipv4
acls:
- - name: test
+ - name: extended_acl_1
acl_type: extended
- name: 110
- - afi: ipv6
- acls:
- - name: R1_TRAFFIC
state: deleted
-# Commands fired:
-# ---------------
+# Task Output
+# -----------
#
-# - no ip access-list extended test
-# - no ip access-list extended 110
-# - no ipv6 access-list R1_TRAFFIC
+# before:
+# - acls:
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: icmp
+# protocol_options:
+# icmp:
+# traceroute: true
+# sequence: 10
+# source:
+# address: 192.0.2.0
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# - destination:
+# host: 198.51.110.0
+# port_protocol:
+# eq: telnet
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 20
+# source:
+# host: 198.51.100.0
+# 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: tcp
+# 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: tcp
+# 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:
+# - grant: deny
+# sequence: 10
+# source:
+# host: 192.168.1.200
+# - grant: deny
+# sequence: 20
+# source:
+# address: 192.168.2.0
+# wildcard_bits: 0.0.0.255
+# acl_type: standard
+# name: std_acl
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# port_protocol:
+# eq: www
+# wildcard_bits: 0.0.0.255
+# grant: deny
+# option:
+# traceroute: true
+# protocol: tcp
+# 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: extended_acl_1
+# afi: ipv4
+# commands:
+# - no ip access-list extended 110
+# - no ip access-list extended extended_acl_1
+# after:
+# - acls:
+# - aces:
+# - destination:
+# address: 198.51.101.0
+# port_protocol:
+# eq: telnet
+# wildcard_bits: 0.0.0.255
+# grant: deny
+# protocol: tcp
+# 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: tcp
+# 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:
+# - grant: deny
+# sequence: 10
+# source:
+# host: 192.168.1.200
+# - grant: deny
+# sequence: 20
+# source:
+# address: 192.168.2.0
+# wildcard_bits: 0.0.0.255
+# acl_type: standard
+# name: std_acl
+# afi: ipv4
# After state:
# -------------
#
-# vios#sh access-lists
-# Standard IP access list std_acl
+# vios#sh running-config | section access-list
+# ip access-list standard 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
+# 20 deny 192.168.2.0 0.0.0.255
+# ip access-list extended 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
+# Using deleted - delete ACLs based on AFI
+
# 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
+# vios#sh running-config | section access-list
+# ip access-list standard std_acl
+# 10 deny 192.168.1.200
+# 20 deny 192.168.2.0 0.0.0.255
+# ip access-list extended 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
+# ip access-list extended 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
+# ip access-list extended 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
+# sequence 10 deny tcp any eq www any eq telnet ack dscp af11
- name: "Delete ACLs based on AFI (Note: This won't delete the all configured ACLs)"
cisco.ios.ios_acls:
@@ -1083,245 +2170,478 @@ EXAMPLES = """
- afi: ipv4
state: deleted
-# Commands fired:
-# ---------------
+# Task Output
+# -----------
#
-# - 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
+# before:
+# - acls:
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: icmp
+# protocol_options:
+# icmp:
+# traceroute: true
+# sequence: 10
+# source:
+# address: 192.0.2.0
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# - destination:
+# host: 198.51.110.0
+# port_protocol:
+# eq: telnet
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 20
+# source:
+# host: 198.51.100.0
+# 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: tcp
+# 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: tcp
+# 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:
+# - grant: deny
+# sequence: 10
+# source:
+# host: 192.168.1.200
+# - grant: deny
+# sequence: 20
+# source:
+# address: 192.168.2.0
+# wildcard_bits: 0.0.0.255
+# acl_type: standard
+# name: std_acl
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# port_protocol:
+# eq: www
+# wildcard_bits: 0.0.0.255
+# grant: deny
+# option:
+# traceroute: true
+# protocol: tcp
+# 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
+# afi: ipv4
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# port_protocol:
+# eq: telnet
+# dscp: af11
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 10
+# source:
+# any: true
+# port_protocol:
+# eq: www
+# name: R1_TRAFFIC
+# afi: ipv6
+# commands:
+# - no ip access-list extended 110
+# - no ip access-list extended 123
+# - no ip access-list standard std_acl
+# - no ip access-list extended test
+# after:
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# port_protocol:
+# eq: telnet
+# dscp: af11
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 10
+# source:
+# any: true
+# port_protocol:
+# eq: www
+# name: R1_TRAFFIC
+# afi: ipv6
# After state:
# -------------
#
-# vios#sh access-lists
-# IPv6 access list R1_TRAFFIC
-# deny tcp any eq www any eq telnet ack dscp af11 sequence 10
+# vios#sh running-config | section access-list
+# ipv6 access-list R1_TRAFFIC
+# sequence 10 deny tcp any eq www any eq telnet ack dscp af11
+
-# Using Deleted without any config passed
-#"(NOTE: This will delete all of configured ACLs)"
+# Using deleted - delete all 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
+# ip access-list standard std_acl
+# 10 deny 192.168.1.200
+# 20 deny 192.168.2.0 0.0.0.255
+# ip access-list extended 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
+# ip access-list extended 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
+# ip access-list extended 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
+# sequence 10 deny tcp any eq www any eq telnet ack dscp af11
-- name:
- "Delete ALL of configured ACLs (Note: This WILL delete the all configured
- ACLs)"
+- name: Delete ALL of configured ACLs
cisco.ios.ios_acls:
state: deleted
-# Commands fired:
-# ---------------
+# Task Output
+# -----------
#
-# - 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
+# before:
+# - acls:
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: icmp
+# protocol_options:
+# icmp:
+# traceroute: true
+# sequence: 10
+# source:
+# address: 192.0.2.0
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# - destination:
+# host: 198.51.110.0
+# port_protocol:
+# eq: telnet
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 20
+# source:
+# host: 198.51.100.0
+# 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: tcp
+# 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: tcp
+# 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:
+# - grant: deny
+# sequence: 10
+# source:
+# host: 192.168.1.200
+# - grant: deny
+# sequence: 20
+# source:
+# address: 192.168.2.0
+# wildcard_bits: 0.0.0.255
+# acl_type: standard
+# name: std_acl
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# port_protocol:
+# eq: www
+# wildcard_bits: 0.0.0.255
+# grant: deny
+# option:
+# traceroute: true
+# protocol: tcp
+# 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
+# afi: ipv4
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# port_protocol:
+# eq: telnet
+# dscp: af11
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 10
+# source:
+# any: true
+# port_protocol:
+# eq: www
+# name: R1_TRAFFIC
+# afi: ipv6
+# commands:
+# - 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: []
# After state:
# -------------
#
-# vios#sh access-lists
+# vios#sh running-config | section access-list
-# Using Gathered
+
+# Using gathered
# Before state:
# -------------
#
# vios#sh access-lists
-# Standard IP access list std_acl
+# ip access-list standard 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
+# 20 deny 192.168.2.0 0.0.0.255
+# ip access-list extended 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
+# ip access-list extended 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
+# ip access-list extended 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
+# ipv6 access-list R1_TRAFFIC
+# sequence 10 deny tcp any eq www any eq telnet ack dscp af11
-- name: Gather listed acls with provided configurations
+- name: Gather ACLs configuration from target device
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 existing running configuration
+# before:
+# - acls:
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# wildcard_bits: 0.0.0.255
+# dscp: ef
+# grant: deny
+# protocol: icmp
+# protocol_options:
+# icmp:
+# traceroute: true
+# sequence: 10
+# source:
+# address: 192.0.2.0
+# wildcard_bits: 0.0.0.255
+# ttl:
+# eq: 10
+# - destination:
+# host: 198.51.110.0
+# port_protocol:
+# eq: telnet
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 20
+# source:
+# host: 198.51.100.0
+# 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: tcp
+# 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: tcp
+# 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:
+# - grant: deny
+# sequence: 10
+# source:
+# host: 192.168.1.200
+# - grant: deny
+# sequence: 20
+# source:
+# address: 192.168.2.0
+# wildcard_bits: 0.0.0.255
+# acl_type: standard
+# name: std_acl
+# - aces:
+# - destination:
+# address: 192.0.3.0
+# port_protocol:
+# eq: www
+# wildcard_bits: 0.0.0.255
+# grant: deny
+# option:
+# traceroute: true
+# protocol: tcp
+# 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
+# afi: ipv4
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# port_protocol:
+# eq: telnet
+# dscp: af11
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 10
+# source:
+# any: true
+# port_protocol:
+# eq: www
+# name: R1_TRAFFIC
+# afi: ipv6
+
+# Using rendered
+
+- name: Render the provided configuration into platform specific configuration lines
cisco.ios.ios_acls:
config:
- afi: ipv4
@@ -1368,12 +2688,11 @@ EXAMPLES = """
# 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"
-# ]
+# 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
@@ -1391,39 +2710,26 @@ EXAMPLES = """
# 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"
-# }
-# ]
+# parsed:
+# - acls:
+# - aces:
+# - destination:
+# any: true
+# port_protocol:
+# eq: telnet
+# dscp: af11
+# grant: deny
+# protocol: tcp
+# protocol_options:
+# tcp:
+# ack: true
+# sequence: 10
+# source:
+# any: true
+# port_protocol:
+# eq: www
+# name: R1_TRAFFIC
+# afi: ipv6
"""
RETURN = """
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_banner.py b/ansible_collections/cisco/ios/plugins/modules/ios_banner.py
index 7c937b122..ca3985c3f 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_banner.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_banner.py
@@ -85,7 +85,7 @@ EXAMPLES = """
- name: Configure banner from file
cisco.ios.ios_banner:
banner: motd
- text: "{{ lookup('file', './config_partial/raw_banner.cfg') }}" # Use unix formatted text files (LF not CRLF) to avoid idempotency issues.
+ text: "{{ lookup('file', './config_partial/raw_banner.cfg') }}" # Use unix formatted text files (LF not CRLF) to avoid idempotency issues.
state: present
- name: Configure the login banner using delimiter
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_bgp_address_family.py b/ansible_collections/cisco/ios/plugins/modules/ios_bgp_address_family.py
index 2021d2aec..14589f20f 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_bgp_address_family.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_bgp_address_family.py
@@ -52,6 +52,18 @@ options:
vrf:
description: Specify parameters for a VPN Routing/Forwarding instance
type: str
+ advertise:
+ description: Configure path advertise/export to other address-family
+ type: dict
+ suboptions:
+ afi:
+ description: Address family for VRF advertise/export
+ type: str
+ choices: ["l2vpn"]
+ safi:
+ description: Advertise/export prefixes to address family
+ type: str
+ choices: ["evpn"]
aggregate_addresses:
description: Configure BGP aggregate entries
type: list
@@ -591,7 +603,7 @@ options:
description:
- AS number used as local AS
- Please refer vendor documentation for valid values
- type: int
+ type: str
dual_as:
description: Accept either real AS or local AS from the ebgp peer
type: bool
@@ -635,12 +647,6 @@ options:
warning_only:
description: Only give warning message when limit is exceeded
type: bool
- next_hop_self:
- description:
- - Disable the next hop calculation for this neighbor
- - This option is DEPRECATED and is replaced with nexthop_self which
- accepts dict as input this attribute will be removed after 2023-06-01.
- type: bool
nexthop_self:
description: Disable the next hop calculation for this neighbor
type: dict
@@ -775,7 +781,7 @@ options:
description:
- Specify a BGP neighbor
- AS of remote neighbor
- type: int
+ type: str
remove_private_as:
description: Remove private AS number from outbound updates
type: dict
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_bgp_global.py b/ansible_collections/cisco/ios/plugins/modules/ios_bgp_global.py
index 0639b6e8a..9aa33c87c 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_bgp_global.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_bgp_global.py
@@ -1834,6 +1834,7 @@ options:
choices:
- merged
- replaced
+ - overridden
- deleted
- purged
- gathered
@@ -1842,6 +1843,7 @@ options:
default: merged
description:
- The state the configuration should be left in
+ - The module have declaratively similar behavior for replaced and overridden state.
- The states I(rendered), I(gathered) and I(parsed) does not perform any change
on the device.
- The state I(rendered) will transform the configuration in C(config) option to
@@ -1855,7 +1857,7 @@ options:
transforms it into JSON format as per the resource module parameters and the
value is returned in the I(parsed) key within the result. The value of C(running_config)
option should be the same format as the output of command I(show running-config
- | include ip route|ipv6 route) executed on device. For state I(parsed) active
+ | section ^router bgp) executed on device. For state I(parsed) active
connection to remote host is not required.
type: str
"""
@@ -2082,6 +2084,7 @@ EXAMPLES = """
# networks:
# - address: 192.0.2.2
# - address: 192.0.2.3
+#
# commands:
# - router bgp 65000
# - no bgp bestpath compare-routerid
@@ -3049,6 +3052,7 @@ def main():
required_if=[
["state", "merged", ["config"]],
["state", "replaced", ["config"]],
+ ["state", "overridden", ["config"]],
["state", "rendered", ["config"]],
["state", "parsed", ["running_config"]],
],
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_command.py b/ansible_collections/cisco/ios/plugins/modules/ios_command.py
index e73f8212f..38756f4de 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_command.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_command.py
@@ -90,7 +90,7 @@ options:
EXAMPLES = r"""
- name: Run show version on remote devices
cisco.ios.ios_command:
- commands: show version'
+ commands: show version
# output-
@@ -337,7 +337,6 @@ EXAMPLES = r"""
# ]
# ]
# }
-
"""
RETURN = """
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_config.py b/ansible_collections/cisco/ios/plugins/modules/ios_config.py
index d86a7dd9d..af73c230c 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_config.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_config.py
@@ -322,7 +322,6 @@ EXAMPLES = """
# permit ip host 192.0.2.2 any log
# permit ip host 192.0.2.3 any log
# permit ip host 192.0.2.4 any log
-
"""
RETURN = """
@@ -450,9 +449,9 @@ def main():
)
mutually_exclusive = [("lines", "src"), ("parents", "src")]
required_if = [
- ("match", "strict", ["lines"]),
- ("match", "exact", ["lines"]),
- ("replace", "block", ["lines"]),
+ ("match", "strict", ["lines", "src"], True),
+ ("match", "exact", ["lines", "src"], True),
+ ("replace", "block", ["lines", "src"], True),
("diff_against", "intended", ["intended_config"]),
]
module = AnsibleModule(
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_evpn_evi.py b/ansible_collections/cisco/ios/plugins/modules/ios_evpn_evi.py
new file mode 100644
index 000000000..c2b8b330e
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_evpn_evi.py
@@ -0,0 +1,540 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+"""
+The module file for ios_evpn_evi
+"""
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+DOCUMENTATION = """
+module: ios_evpn_evi
+short_description: Resource module to configure L2VPN EVPN EVI.
+description: This module provides declarative management of L2VPN EVPN EVI on Cisco IOS network
+ devices.
+version_added: 5.3.0
+author: Padmini Priyadarshini Sivaraj (@PadminiSivaraj)
+notes:
+ - Tested against Cisco IOS device with Version 17.13.01 on Cat9k on CML.
+ - This module works with connection C(network_cli).
+ See U(https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html)
+options:
+ config:
+ description: A dictionary of L2VPN Ethernet Virtual Private Network (EVPN) EVI configuration
+ type: list
+ elements: dict
+ suboptions:
+ evi:
+ description: EVPN instance value
+ type: int
+ required: True
+ default_gateway:
+ description: Default Gateway parameters
+ type: dict
+ suboptions:
+ advertise:
+ description: Advertise Default Gateway MAC/IP routes
+ type: dict
+ suboptions:
+ enable:
+ description: Enable advertisement of Default Gateway MAC/IP routes
+ type: bool
+ disable:
+ description: Disable advertisement of Default Gateway MAC/IP routes
+ type: bool
+ ip:
+ description: IP parameters
+ type: dict
+ suboptions:
+ local_learning:
+ description: IP local learning
+ type: dict
+ suboptions:
+ enable:
+ description: Enable IP local learning
+ type: bool
+ disable:
+ description: Disable IP local learning
+ type: bool
+ encapsulation:
+ description: EVPN encapsulation type
+ type: str
+ choices:
+ - vxlan
+ default: vxlan
+ replication_type:
+ description: Method for replicating BUM traffic
+ type: str
+ choices:
+ - ingress
+ - static
+ route_distinguisher:
+ description: EVPN Route Distinguisher
+ type: str
+ running_config:
+ description:
+ - This option is used only with state I(parsed).
+ - The value of this option should be the output received from the IOS
+ device by executing the command B(sh running-config nve | section ^l2vpn evpn$).
+ - The state I(parsed) reads the configuration from C(running_config)
+ option and transforms it into Ansible structured data as per the
+ resource module's argspec and the value is then returned in the
+ I(parsed) key within the result.
+ type: str
+ state:
+ description:
+ - The state the configuration should be left in
+ type: str
+ choices:
+ - merged
+ - replaced
+ - overridden
+ - deleted
+ - gathered
+ - rendered
+ - parsed
+ default: merged
+"""
+
+EXAMPLES = """
+
+# Using state merged
+
+# Before state:
+# -------------
+# l2vpn evpn instance 101 vlan-based
+# encapsulation vxlan
+# replication-type static
+# !
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# !
+# l2vpn evpn instance 201 vlan-based
+# encapsulation vxlan
+# replication-type static
+# !
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+
+# - name: Merge provided configuration with device configuration
+# cisco.ios.ios_evpn_evi:
+# config:
+# - evi: 101
+# replication_type: ingress
+# route_distinguisher: '1:1'
+# default_gateway:
+# advertise:
+# enable: False
+# ip:
+# local_learning:
+# enable: True
+#
+# - evi: 202
+# replication_type: static
+# default_gateway:
+# advertise:
+# enable: True
+# ip:
+# local_learning:
+# disable: True
+# state: merged
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "l2vpn evpn instance 101 vlan-based",
+# "ip local-learning enable",
+# "replication-type ingress",
+# "rd 1:1",
+# "l2vpn evpn instance 202 vlan-based",
+# "default-gateway advertise enable",
+# "ip local-learning disable",
+# "replication-type static"
+# ],
+
+# After state:
+# ------------
+# l2vpn evpn instance 101 vlan-based
+# encapsulation vxlan
+# rd 1:1
+# replication-type ingress
+# ip local-learning enable
+# !
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# !
+# l2vpn evpn instance 201 vlan-based
+# encapsulation vxlan
+# replication-type static
+# !
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type static
+# ip local-learning disable
+# default-gateway advertise enable
+
+
+# Using state replaced
+
+# Before state:
+# -------------
+# l2vpn evpn instance 101 vlan-based
+# encapsulation vxlan
+# rd 1:1
+# replication-type ingress
+# ip local-learning enable
+# !
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# !
+# l2vpn evpn instance 201 vlan-based
+# encapsulation vxlan
+# replication-type static
+# !
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type static
+# ip local-learning disable
+# default-gateway advertise enable
+
+# - name: Replaces the device configuration with the provided configuration
+# cisco.ios.ios_evpn_evi:
+# config:
+# - evi: 101
+# replication_type: ingress
+# default_gateway:
+# advertise:
+# enable: True
+# - evi: 202
+# replication_type: ingress
+# state: replaced
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "l2vpn evpn instance 101 vlan-based",
+# "default-gateway advertise enable",
+# "no ip local-learning enable",
+# "no rd 1:1",
+# "l2vpn evpn instance 202 vlan-based",
+# "no default-gateway advertise enable",
+# "no ip local-learning disable",
+# "replication-type ingress"
+# ],
+
+# After state:
+# ------------
+# l2vpn evpn instance 101 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# default-gateway advertise enable
+# !
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# !
+# l2vpn evpn instance 201 vlan-based
+# encapsulation vxlan
+# replication-type static
+# !
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+
+# Using state overridden
+
+# Before state:
+# -------------
+# l2vpn evpn instance 101 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# default-gateway advertise enable
+# !
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# !
+# l2vpn evpn instance 201 vlan-based
+# encapsulation vxlan
+# replication-type static
+# !
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+
+# - name: Override the device configuration with provided configuration
+# cisco.ios.ios_evpn_evi:
+# config:
+# - evi: 101
+# replication_type: ingress
+# default_gateway:
+# advertise:
+# enable: True
+# - evi: 202
+# replication_type: static
+# default_gateway:
+# advertise:
+# enable: True
+# state: overridden
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "no l2vpn evpn instance 102 vlan-based",
+# "no l2vpn evpn instance 201 vlan-based",
+# "l2vpn evpn instance 202 vlan-based",
+# "default-gateway advertise enable",
+# "replication-type static"
+# ],
+
+# After state:
+# ------------
+# l2vpn evpn instance 101 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# default-gateway advertise enable
+# !
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type static
+# default-gateway advertise enable
+
+
+# Using state Deleted
+
+# Before state:
+# -------------
+# l2vpn evpn instance 101 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# default-gateway advertise enable
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type static
+# default-gateway advertise enable
+
+# - name: "Delete the given EVI(s)"
+# cisco.ios.ios_evpn_evi:
+# config:
+# - evi: 101
+# state: deleted
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "no l2vpn evpn instance 101 vlan-based"
+# ],
+
+# After state:
+# -------------
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type static
+# default-gateway advertise enable
+
+# Using state Deleted without any config passed
+
+# Before state:
+# -------------
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type static
+# default-gateway advertise enable
+
+# - name: "Delete ALL EVIs"
+# cisco.ios.ios_evpn_evi:
+# state: deleted
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "no l2vpn evpn instance 102 vlan-based",
+# "no l2vpn evpn instance 202 vlan-based"
+# ],
+
+# After state:
+# -------------
+# !
+
+# Using gathered
+
+# Before state:
+# -------------
+#
+# l2vpn evpn instance 101 vlan-based
+# encapsulation vxlan
+# replication-type static
+# !
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# !
+# l2vpn evpn instance 201 vlan-based
+# encapsulation vxlan
+# replication-type static
+# !
+# l2vpn evpn instance 202 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+
+# - name: Gather facts for evpn_evi
+# cisco.ios.ios_evpn_evi:
+# config:
+# state: gathered
+
+# Task Output:
+# ------------
+#
+# gathered:
+# - evi: 101
+# encapsulation: vxlan
+# replication_type: static
+# - evi: 102
+# encapsulation: vxlan
+# replication_type: ingress
+# - evi: 201
+# encapsulation: vxlan
+# replication_type: static
+# - evi: 202
+# encapsulation: vxlan
+# replication_type: ingress
+
+# Using Rendered
+
+# - name: Rendered the provided configuration with the existing running configuration
+# cisco.ios.ios_evpn_evi:
+# config:
+# - evi: 101
+# replication_type: ingress
+# default_gateway:
+# advertise:
+# enable: True
+# - evi: 202
+# replication_type: ingress
+# state: rendered
+
+# Task Output:
+# ------------
+#
+# rendered:
+# - l2vpn evpn instance 101 vlan-based
+# - default-gateway advertise enable
+# - replication-type ingress
+# - l2vpn evpn instance 202 vlan-based
+# - replication-type ingress
+
+
+# Using parsed
+
+# File: parsed.cfg
+# ----------------
+#
+# l2vpn evpn instance 101 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# default-gateway advertise enable
+# !
+# l2vpn evpn instance 102 vlan-based
+# encapsulation vxlan
+# replication-type ingress
+# !
+
+# - name: Parse the commands for provided configuration
+# cisco.ios.ios_evpn_evi:
+# running_config: "{{ lookup('file', 'parsed.cfg') }}"
+# state: parsed
+
+# Task Output:
+# ------------
+#
+# parsed:
+# - evi: 101
+# encapsulation: vxlan
+# replication_type: ingress
+# default_gateway:
+# advertise:
+# enable: true
+# - evi: 102
+# encapsulation: vxlan
+# replication_type: ingress
+"""
+
+RETURN = """
+before:
+ description: The configuration prior to the module execution.
+ returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged)
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+after:
+ description: The resulting configuration after module execution.
+ returned: when changed
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+commands:
+ description: The set of commands pushed to the remote device.
+ returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged)
+ type: list
+ sample:
+ - "l2vpn evpn instance 101 vlan-based"
+ - "encapsulation vxlan"
+ - "replication-type ingress"
+"""
+
+from ansible.module_utils.basic import AnsibleModule
+
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.evpn_evi.evpn_evi import (
+ Evpn_eviArgs,
+)
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.config.evpn_evi.evpn_evi import (
+ Evpn_evi,
+)
+
+
+def main():
+ """
+ Main entry point for module execution
+
+ :returns: the result form module invocation
+ """
+ module = AnsibleModule(
+ argument_spec=Evpn_eviArgs.argument_spec,
+ mutually_exclusive=[["config", "running_config"]],
+ required_if=[
+ ["state", "merged", ["config"]],
+ ["state", "replaced", ["config"]],
+ ["state", "overridden", ["config"]],
+ ["state", "rendered", ["config"]],
+ ["state", "parsed", ["running_config"]],
+ ],
+ supports_check_mode=True,
+ )
+
+ result = Evpn_evi(module).execute_module()
+ module.exit_json(**result)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_evpn_global.py b/ansible_collections/cisco/ios/plugins/modules/ios_evpn_global.py
new file mode 100644
index 000000000..0ffe52b90
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_evpn_global.py
@@ -0,0 +1,429 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+"""
+The module file for ios_evpn_global
+"""
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+DOCUMENTATION = """
+module: ios_evpn_global
+short_description: Resource module to configure L2VPN EVPN.
+description: This module provides declarative management of L2VPN EVPN on Cisco IOS network
+ devices.
+version_added: 5.3.0
+author: Padmini Priyadarshini Sivaraj (@PadminiSivaraj)
+notes:
+ - Tested against Cisco IOS device with Version 17.13.01 on Cat9k on CML.
+ - This module works with connection C(network_cli).
+ See U(https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html)
+options:
+ config:
+ description: A dictionary of L2VPN Ethernet Virtual Private Network (EVPN) configuration
+ type: dict
+ suboptions:
+ default_gateway:
+ description: Default gateway parameters
+ type: dict
+ suboptions:
+ advertise:
+ description: Advertise Default Gateway MAC/IP routes
+ type: bool
+ flooding_suppression:
+ description: Suppress flooding of broadcast, multicast, and/or unknown unicast packets
+ type: dict
+ suboptions:
+ address_resolution:
+ description: Suppress flooding of Address Resolution and Neighbor Discovery Protocol packets
+ type: dict
+ suboptions:
+ disable:
+ description: Disable flooding suppression
+ type: bool
+ ip:
+ description: IP parameters
+ type: dict
+ suboptions:
+ local_learning:
+ description: IP local learning
+ type: dict
+ suboptions:
+ disable:
+ description: Disable IP local learning
+ type: bool
+ replication_type:
+ description: Method for replicating BUM traffic
+ type: str
+ choices:
+ - ingress
+ - static
+ route_target:
+ description: Route Target VPN Extended Communities
+ type: dict
+ suboptions:
+ auto:
+ description: Automatically set a route-target
+ type: dict
+ suboptions:
+ vni:
+ description: Set vni-based route-target
+ type: bool
+ router_id:
+ description: EVPN router ID
+ type: str
+ running_config:
+ description:
+ - This option is used only with state I(parsed).
+ - The value of this option should be the output received from the IOS
+ device by executing the command B(sh running-config nve | section ^l2vpn evpn$).
+ - The state I(parsed) reads the configuration from C(running_config)
+ option and transforms it into Ansible structured data as per the
+ resource module's argspec and the value is then returned in the
+ I(parsed) key within the result.
+ type: str
+ state:
+ description:
+ - The state the configuration should be left in
+ type: str
+ choices:
+ - merged
+ - replaced
+ - overridden
+ - deleted
+ - gathered
+ - rendered
+ - parsed
+ default: merged
+"""
+
+
+EXAMPLES = """
+
+# Using merged
+
+# Before state:
+# -------------
+#
+# Leaf-01#show running-config nve | section ^l2vpn evpn$
+# l2vpn evpn
+# replication-type static
+# router-id Loopback1
+# default-gateway advertise
+
+- name: Merge provided configuration with device configuration
+ cisco.ios.ios_evpn_global:
+ config:
+ replication_type: ingress
+ route_target:
+ auto:
+ vni: true
+ default_gateway:
+ advertise: false
+ ip:
+ local_learning:
+ disable: true
+ flooding_suppression:
+ address_resolution:
+ disable: false
+ state: merged
+
+# Task Output
+# -----------
+#
+# before:
+# - replication_type: static
+# router_id: Loopback1
+# default_gateway:
+# advertise: true
+# commands:
+# - l2vpn evpn
+# no default-gateway advertise
+# replication-type ingress
+# route-target auto vni
+# ip local-learning disable
+# after:
+# - replication_type: ingress
+# router_id: Loopback1
+# route_target:
+# auto:
+# vni: true
+# ip:
+# local_learning:
+# disable: true
+
+# After state:
+# ------------
+#
+# Leaf-01#show running-config nve | section ^l2vpn evpn$
+# l2vpn evpn
+# replication-type ingress
+# router-id Loopback1
+# ip local-learning disable
+# route-target auto vni
+
+# Using replaced
+
+# Before state:
+# -------------
+#
+# Leaf-01#show running-config nve | section ^l2vpn evpn$
+# l2vpn evpn
+# replication-type ingress
+# router-id Loopback1
+# ip local-learning disable
+# route-target auto vni
+
+- name: Replaces device configuration for EVPN global with provided configuration
+ cisco.ios.ios_evpn_global:
+ config:
+ replication_type: static
+ router_id: Loopback2
+ default_gateway:
+ advertise: true
+ flooding_suppression:
+ address_resolution:
+ disable: true
+ state: replaced
+
+# Task Output
+# -----------
+#
+# before:
+# - replication_type: ingress
+# router_id: Loopback1
+# route_target:
+# auto:
+# vni: true
+# ip:
+# local_learning:
+# disable: true
+# commands:
+# - l2vpn evpn
+# - default-gateway advertise
+# - flooding-suppression address-resolution disable
+# - no ip local-learning disable
+# - replication-type static
+# - no route-target auto vni
+# - router-id Loopback2
+# after:
+# - replication_type: ingress
+# router_id: Loopback2
+# default_gateway:
+# advertise: true
+# flooding_suppression:
+# address_resolution:
+# disable: true
+
+# After state:
+# ------------
+#
+# Leaf-01#show running-config nve | section ^l2vpn evpn$
+# l2vpn evpn
+# replication-type static
+# flooding-suppression address-resolution disable
+# router-id Loopback2
+# default-gateway advertise
+
+# Using Deleted
+
+# Before state:
+# -------------
+#
+# Leaf-01#show running-config nve | section ^l2vpn evpn$
+# l2vpn evpn
+# replication-type static
+# flooding-suppression address-resolution disable
+# router-id Loopback2
+# default-gateway advertise
+
+- name: Delete EVPN global
+ cisco.ios.ios_evpn_global:
+ config:
+ state: deleted
+
+# before:
+# - replication_type: ingress
+# router_id: Loopback2
+# default_gateway:
+# advertise: true
+# flooding_suppression:
+# address_resolution:
+# disable: true
+# commands:
+# - no l2vpn evpn
+# after:
+#
+
+# After state:
+# -------------
+#
+# Leaf-01#show running-config nve | section ^l2vpn evpn$
+#
+
+# Using gathered
+
+# Before state:
+# -------------
+#
+# Leaf-01#show running-config nve | section ^l2vpn evpn$
+# l2vpn evpn
+# replication-type ingress
+# router-id Loopback1
+# ip local-learning disable
+# route-target auto vni
+
+- name: Gather facts of l2vpn evpn
+ cisco.ios.ios_evpn_global:
+ config:
+ state: gathered
+
+# Task Output:
+# ------------
+#
+# gathered:
+# - replication_type: ingress
+# route_target:
+# auto:
+# vni: true
+# router_id: Loopback1
+# ip:
+# local_learning:
+# disable: true
+
+# Using rendered
+
+- name: Render the commands for provided configuration
+ cisco.ios.ios_evpn_global:
+ config:
+ replication_type: static
+ route_target:
+ auto:
+ vni: true
+ state: rendered
+
+# Task Output:
+# ------------
+#
+# rendered:
+# - l2vpn evpn
+# - replication-type static
+# - route-target auto vni
+
+# Using parsed
+
+# File: parsed.cfg
+# ----------------
+#
+# l2vpn evpn
+# replication-type ingress
+# router-id Loopback1
+# default-gateway advertise
+# route-target auto vni
+
+- name: Parse the provided configuration
+ cisco.ios.ios_evpn_global:
+ running_config: "{{ lookup('file', 'parsed.cfg') }}"
+ state: parsed
+
+# Task Output:
+# ------------
+#
+# parsed:
+# - replication_type: ingress
+# route_target:
+# auto:
+# vni: true
+# router_id: Loopback1
+# default_gateway:
+# advertise: true
+"""
+
+RETURN = """
+before:
+ description: The configuration prior to the module execution.
+ returned: when I(state) is C(merged), C(replaced), C(overridden), or C(deleted)
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+after:
+ description: The resulting configuration after module execution.
+ returned: when changed
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+commands:
+ description: The set of commands pushed to the remote device.
+ returned: when I(state) is C(merged), C(replaced), C(overridden), or C(deleted)
+ type: list
+ sample:
+ - "l2vpn evpn"
+ - "replication-type ingress"
+ - "router_id Loopback1"
+rendered:
+ description: The provided configuration in the task rendered in device-native format (offline).
+ returned: when I(state) is C(rendered)
+ type: list
+ sample:
+ - l2vpn evpn
+ - replication-type static
+ - route-target auto vni
+gathered:
+ description: Facts about the network resource gathered from the remote device as structured data.
+ returned: when I(state) is C(gathered)
+ type: list
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+parsed:
+ description: The device native config provided in I(running_config) option parsed into structured data as per module argspec.
+ returned: when I(state) is C(parsed)
+ type: list
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+"""
+
+from ansible.module_utils.basic import AnsibleModule
+
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.evpn_global.evpn_global import (
+ Evpn_globalArgs,
+)
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.config.evpn_global.evpn_global import (
+ Evpn_global,
+)
+
+
+def main():
+ """
+ Main entry point for module execution
+
+ :returns: the result form module invocation
+ """
+ module = AnsibleModule(
+ argument_spec=Evpn_globalArgs.argument_spec,
+ mutually_exclusive=[["config", "running_config"]],
+ required_if=[
+ ["state", "merged", ["config"]],
+ ["state", "replaced", ["config"]],
+ ["state", "overridden", ["config"]],
+ ["state", "rendered", ["config"]],
+ ["state", "parsed", ["running_config"]],
+ ],
+ supports_check_mode=True,
+ )
+
+ result = Evpn_global(module).execute_module()
+ module.exit_json(**result)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_facts.py b/ansible_collections/cisco/ios/plugins/modules/ios_facts.py
index fd4c786f5..93b7b446a 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_facts.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_facts.py
@@ -184,6 +184,10 @@ ansible_net_memtotal_mb:
description: The total memory on the remote device in Mb
returned: when hardware is configured
type: int
+ansible_net_cpu_utilization:
+ description: The current CPU utilization of the device
+ returned: when hardware is configured
+ type: dict
# config
ansible_net_config:
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_hostname.py b/ansible_collections/cisco/ios/plugins/modules/ios_hostname.py
index 2949fc584..b8efdd5b8 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_hostname.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_hostname.py
@@ -194,7 +194,7 @@ EXAMPLES = """
# Before state:
# -------------
-#router-ios#show running-config | section ^hostname
+# router-ios#show running-config | section ^hostname
# hostname RouterTest
# Gathered play:
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_l3_interfaces.py b/ansible_collections/cisco/ios/plugins/modules/ios_l3_interfaces.py
index 7ea6d0d7a..0f6924124 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_l3_interfaces.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_l3_interfaces.py
@@ -827,7 +827,6 @@ EXAMPLES = """
# ipv6:
# - address: 2001:db8:0:3::/64
# name: GigabitEthernet0/2
-
"""
RETURN = """
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_lacp.py b/ansible_collections/cisco/ios/plugins/modules/ios_lacp.py
index 705b0fced..350dc4e37 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_lacp.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_lacp.py
@@ -63,6 +63,7 @@ options:
state:
description:
- The state the configuration should be left in
+ - The module have declaratively similar behavior for replaced and overridden state.
- The states I(rendered), I(gathered) and I(parsed) does not perform any change
on the device.
- The state I(rendered) will transform the configuration in C(config) option to
@@ -82,6 +83,7 @@ options:
choices:
- merged
- replaced
+ - overridden
- deleted
- rendered
- parsed
@@ -255,6 +257,7 @@ def main():
required_if = [
("state", "merged", ("config",)),
("state", "replaced", ("config",)),
+ ("state", "overridden", ("config",)),
("state", "rendered", ("config",)),
("state", "parsed", ("running_config",)),
]
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_lacp_interfaces.py b/ansible_collections/cisco/ios/plugins/modules/ios_lacp_interfaces.py
index fe8e92bcc..aeec9db42 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_lacp_interfaces.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_lacp_interfaces.py
@@ -451,7 +451,6 @@ EXAMPLES = """
# "name": "Port-channel10"
# }
# ]
-
"""
RETURN = """
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_lag_interfaces.py b/ansible_collections/cisco/ios/plugins/modules/ios_lag_interfaces.py
index 64a43f700..e716cf4d4 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_lag_interfaces.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_lag_interfaces.py
@@ -135,7 +135,7 @@ EXAMPLES = """
- name: Port-channel20
members:
- member: GigabitEthernet0/3
- mode: on
+ mode: "on"
- name: Port-channel30
members:
- member: GigabitEthernet0/4
@@ -358,7 +358,7 @@ EXAMPLES = """
# channel-group 30 mode active
# Using Deleted without any config passed
-#"(NOTE: This will delete all of configured LLDP module attributes)"
+# "(NOTE: This will delete all of configured LLDP module attributes)"
#
# Before state:
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_linkagg.py b/ansible_collections/cisco/ios/plugins/modules/ios_linkagg.py
index cadc5551c..4572afe42 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_linkagg.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_linkagg.py
@@ -138,9 +138,8 @@ EXAMPLES = """
- name: Create aggregate of linkagg definitions
cisco.ios.ios_linkagg:
aggregate:
- - { group: 3, mode: on, members: [GigabitEthernet0/1] }
+ - { group: 3, mode: "on", members: [GigabitEthernet0/1] }
- { group: 100, mode: passive, members: [GigabitEthernet0/2] }
-
"""
RETURN = """
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_lldp_global.py b/ansible_collections/cisco/ios/plugins/modules/ios_lldp_global.py
index 3cbeac6d1..bef63639e 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_lldp_global.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_lldp_global.py
@@ -124,6 +124,7 @@ options:
state:
description:
- The state the configuration should be left in
+ - The module have declaratively similar behavior for replaced and overridden state.
- The states I(rendered), I(gathered) and I(parsed) does not perform any change
on the device.
- The state I(rendered) will transform the configuration in C(config) option to
@@ -143,6 +144,7 @@ options:
choices:
- merged
- replaced
+ - overridden
- deleted
- rendered
- gathered
@@ -199,7 +201,7 @@ EXAMPLES = """
# lldp reinit 5
# Using Deleted without any config passed
-#"(NOTE: This will delete all of configured LLDP module attributes)"
+# "(NOTE: This will delete all of configured LLDP module attributes)"
# Before state:
# -------------
@@ -297,7 +299,6 @@ EXAMPLES = """
# "reinit": 3,
# "timer": 10
# }
-
"""
RETURN = """
@@ -337,6 +338,7 @@ def main():
required_if = [
("state", "merged", ("config",)),
("state", "replaced", ("config",)),
+ ("state", "overridden", ("config",)),
("state", "rendered", ("config",)),
("state", "parsed", ("running_config",)),
]
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_logging.py b/ansible_collections/cisco/ios/plugins/modules/ios_logging.py
deleted file mode 100644
index 492e94d85..000000000
--- a/ansible_collections/cisco/ios/plugins/modules/ios_logging.py
+++ /dev/null
@@ -1,498 +0,0 @@
-#!/usr/bin/python
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import absolute_import, division, print_function
-
-
-__metaclass__ = type
-
-DOCUMENTATION = """
-module: ios_logging
-author: Trishna Guha (@trishnaguha)
-short_description: (deprecated, removed after 2023-06-01) Manage logging on network devices
-description:
- - This module provides declarative management of logging on Cisco Ios devices.
-version_added: 1.0.0
-deprecated:
- alternative: ios_logging_global
- why: Newer and updated modules released with more functionality.
- removed_at_date: "2023-06-01"
-notes:
- - Tested against IOS 15.6
- - The 'Default System Message Logging Configuration' of the ios device
- like facility Local7 or logging on is not subjected to idempotency causes
-options:
- dest:
- description:
- - Destination of the logs.
- - On dest has to be quoted as 'on' or else pyyaml will convert
- to True before it gets to Ansible.
- choices:
- - "on"
- - host
- - console
- - monitor
- - buffered
- - trap
- type: str
- name:
- description:
- - The hostname or IP address of the destination.
- - Required when I(dest=host).
- type: str
- size:
- description:
- - Size of buffer. The acceptable value is in range from 4096 to 4294967295 bytes.
- type: int
- facility:
- description:
- - Set logging facility.
- type: str
- level:
- description:
- - Set logging severity levels.
- default: debugging
- choices:
- - emergencies
- - alerts
- - critical
- - errors
- - warnings
- - notifications
- - informational
- - debugging
- type: str
- aggregate:
- description: List of logging definitions.
- type: list
- elements: dict
- suboptions:
- dest:
- description:
- - Destination of the logs.
- - On dest has to be quoted as 'on' or else pyyaml will convert
- to True before it gets to Ansible.
- choices:
- - "on"
- - host
- - console
- - monitor
- - buffered
- - trap
- type: str
- name:
- description:
- - The hostname or IP address of the destination.
- - Required when I(dest=host).
- type: str
- size:
- description:
- - Size of buffer. The acceptable value is in range from 4096 to 4294967295 bytes.
- type: int
- facility:
- description:
- - Set logging facility.
- type: str
- level:
- description:
- - Set logging severity levels.
- type: str
- choices:
- - emergencies
- - alerts
- - critical
- - errors
- - warnings
- - notifications
- - informational
- - debugging
- state:
- description:
- - State of the logging configuration.
- choices:
- - present
- - absent
- type: str
- state:
- description:
- - State of the logging configuration.
- default: present
- choices:
- - present
- - absent
- type: str
-extends_documentation_fragment:
- - cisco.ios.ios
-"""
-
-EXAMPLES = """
-- 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 = """
-commands:
- description: The list of configuration mode commands to send to the device
- returned: always
- type: list
- sample:
- - logging facility local7
- - logging host 172.16.0.1
-"""
-import re
-
-from copy import deepcopy
-
-from ansible.module_utils._text import to_text
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils.common.validation import check_required_if
-from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import (
- remove_default_spec,
- validate_ip_address,
-)
-
-from ansible_collections.cisco.ios.plugins.module_utils.network.ios.ios import (
- get_capabilities,
- get_config,
- load_config,
-)
-
-
-def validate_size(value, module):
- if value:
- if not int(4096) <= int(value) <= int(4294967295):
- module.fail_json(msg="size must be between 4096 and 4294967295")
- else:
- return value
-
-
-def map_obj_to_commands(updates, module, os_version):
- dest_group = "console", "monitor", "buffered", "on", "trap"
- commands = list()
- want, have = updates
- for w in want:
- dest = w["dest"]
- name = w["name"]
- size = w["size"]
- facility = w["facility"]
- level = w["level"]
- state = w["state"]
- del w["state"]
- if facility:
- w["dest"] = "facility"
- if state == "absent" and w in have:
- if dest:
- if dest == "host":
- if os_version.startswith("12."):
- commands.append("no logging {0}".format(name))
- else:
- commands.append("no logging host {0}".format(name))
- elif dest in dest_group:
- commands.append("no logging {0}".format(dest))
- else:
- module.fail_json(
- msg="dest must be among console, monitor, buffered, host, on, trap",
- )
- if facility:
- commands.append("no logging facility {0}".format(facility))
- if state == "present" and w not in have:
- if facility:
- present = False
- for entry in have:
- if entry["dest"] == "facility" and entry["facility"] == facility:
- present = True
- if not present:
- commands.append("logging facility {0}".format(facility))
- if dest == "host":
- if os_version.startswith("12."):
- commands.append("logging {0}".format(name))
- else:
- commands.append("logging host {0}".format(name))
- elif dest == "on":
- commands.append("logging on")
- elif dest == "buffered" and size:
- present = False
- for entry in have:
- if (
- entry["dest"] == "buffered"
- and entry["size"] == size
- and entry["level"] == level
- ):
- present = True
- if not present:
- if level and level != "debugging":
- commands.append("logging buffered {0} {1}".format(size, level))
- else:
- commands.append("logging buffered {0}".format(size))
- elif dest:
- dest_cmd = "logging {0}".format(dest)
- if level:
- dest_cmd += " {0}".format(level)
- commands.append(dest_cmd)
- return commands
-
-
-def parse_facility(line, dest):
- facility = None
- if dest == "facility":
- match = re.search("logging facility (\\S+)", line, re.M)
- if match:
- facility = match.group(1)
- return facility
-
-
-def parse_size(line, dest):
- size = None
- if dest == "buffered":
- match = re.search("logging buffered(?: (\\d+))?(?: [a-z]+)?", line, re.M)
- if match:
- if match.group(1) is not None:
- size = match.group(1)
- else:
- size = "4096"
- return size
-
-
-def parse_name(line, dest):
- if dest == "host":
- match = re.search("logging host (\\S+)", line, re.M)
- if match:
- name = match.group(1)
- else:
- name = None
- return name
-
-
-def parse_level(line, dest):
- level_group = (
- "emergencies",
- "alerts",
- "critical",
- "errors",
- "warnings",
- "notifications",
- "informational",
- "debugging",
- )
- if dest == "host":
- level = "debugging"
- else:
- if dest == "buffered":
- match = re.search("logging buffered(?: \\d+)?(?: ([a-z]+))?", line, re.M)
- else:
- match = re.search("logging {0} (\\S+)".format(dest), line, re.M)
- if match and match.group(1) in level_group:
- level = match.group(1)
- else:
- level = "debugging"
- return level
-
-
-def map_config_to_obj(module):
- obj = []
- dest_group = ("console", "host", "monitor", "buffered", "on", "facility", "trap")
- data = get_config(module, flags=["| include logging"])
- for line in data.split("\n"):
- match = re.search("^logging (\\S+)", line, re.M)
- if match:
- if match.group(1) in dest_group:
- dest = match.group(1)
- obj.append(
- {
- "dest": dest,
- "name": parse_name(line, dest),
- "size": parse_size(line, dest),
- "facility": parse_facility(line, dest),
- "level": parse_level(line, dest),
- },
- )
- elif validate_ip_address(match.group(1)):
- dest = "host"
- obj.append(
- {
- "dest": dest,
- "name": match.group(1),
- "size": parse_size(line, dest),
- "facility": parse_facility(line, dest),
- "level": parse_level(line, dest),
- },
- )
- else:
- ip_match = re.search("\\d+\\.\\d+\\.\\d+\\.\\d+", match.group(1), re.M)
- if ip_match:
- dest = "host"
- obj.append(
- {
- "dest": dest,
- "name": match.group(1),
- "size": parse_size(line, dest),
- "facility": parse_facility(line, dest),
- "level": parse_level(line, dest),
- },
- )
- return obj
-
-
-def map_params_to_obj(module, required_if=None):
- obj = []
- aggregate = module.params.get("aggregate")
- if aggregate:
- for item in aggregate:
- for key in item:
- if item.get(key) is None:
- item[key] = module.params[key]
- try:
- check_required_if(required_if, item)
- except TypeError as exc:
- module.fail_json(to_text(exc))
- d = item.copy()
- if d["dest"] != "host":
- d["name"] = None
- if d["dest"] == "buffered":
- if "size" in d:
- d["size"] = str(validate_size(d["size"], module))
- elif "size" not in d:
- d["size"] = str(4096)
- else:
- pass
- if d["dest"] != "buffered":
- d["size"] = None
- obj.append(d)
- else:
- if module.params["dest"] != "host":
- module.params["name"] = None
- if module.params["dest"] == "buffered":
- if not module.params["size"]:
- module.params["size"] = str(4096)
- else:
- module.params["size"] = None
- if module.params["size"] is None:
- obj.append(
- {
- "dest": module.params["dest"],
- "name": module.params["name"],
- "size": module.params["size"],
- "facility": module.params["facility"],
- "level": module.params["level"],
- "state": module.params["state"],
- },
- )
- else:
- obj.append(
- {
- "dest": module.params["dest"],
- "name": module.params["name"],
- "size": str(validate_size(module.params["size"], module)),
- "facility": module.params["facility"],
- "level": module.params["level"],
- "state": module.params["state"],
- },
- )
- return obj
-
-
-def main():
- """main entry point for module execution"""
- element_spec = dict(
- dest=dict(type="str", choices=["on", "host", "console", "monitor", "buffered", "trap"]),
- name=dict(type="str"),
- size=dict(type="int"),
- facility=dict(type="str"),
- level=dict(
- type="str",
- default="debugging",
- choices=[
- "emergencies",
- "alerts",
- "critical",
- "errors",
- "warnings",
- "notifications",
- "informational",
- "debugging",
- ],
- ),
- state=dict(default="present", choices=["present", "absent"]),
- )
- aggregate_spec = deepcopy(element_spec)
- # remove default in aggregate spec, to handle common arguments
- remove_default_spec(aggregate_spec)
- argument_spec = dict(aggregate=dict(type="list", elements="dict", options=aggregate_spec))
- argument_spec.update(element_spec)
- required_if = [("dest", "host", ["name"])]
- module = AnsibleModule(
- argument_spec=argument_spec,
- required_if=required_if,
- supports_check_mode=True,
- )
- device_info = get_capabilities(module)
- os_version = device_info["device_info"]["network_os_version"]
- warnings = list()
- result = {"changed": False}
- if warnings:
- result["warnings"] = warnings
- want = map_params_to_obj(module, required_if=required_if)
- have = map_config_to_obj(module)
- commands = map_obj_to_commands((want, have), module, os_version)
- result["commands"] = commands
- if commands:
- if not module.check_mode:
- load_config(module, commands)
- result["changed"] = True
- module.exit_json(**result)
-
-
-if __name__ == "__main__":
- main()
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_logging_global.py b/ansible_collections/cisco/ios/plugins/modules/ios_logging_global.py
index a77ca1115..aab889772 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_logging_global.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_logging_global.py
@@ -702,7 +702,7 @@ EXAMPLES = """
# Before state:
# -------------
-#router-ios#show running-config | section logging
+# router-ios#show running-config | section logging
# logging exception 4099
# logging message-counter log
# logging userinfo
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_ntp.py b/ansible_collections/cisco/ios/plugins/modules/ios_ntp.py
index 2eeb2b088..065054411 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_ntp.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_ntp.py
@@ -116,8 +116,8 @@ EXAMPLES = """
auth_key: 15435A030726242723273C21181319000A
auth: true
state: present
-
"""
+
RETURN = """
commands:
description: command sent to the device
@@ -125,6 +125,7 @@ commands:
type: list
sample: ["no ntp server 10.0.255.10", "no ntp source Loopback0"]
"""
+
import re
from ansible.module_utils.basic import AnsibleModule
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_ntp_global.py b/ansible_collections/cisco/ios/plugins/modules/ios_ntp_global.py
index 87c37a25f..6293b4c0d 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_ntp_global.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_ntp_global.py
@@ -608,7 +608,7 @@ EXAMPLES = """
# Before state:
# -------------
-#router-ios#show running-config | section ^ntp
+# router-ios#show running-config | section ^ntp
# ntp max-associations 34
# ntp logging
# ntp allow mode control 4
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_ospf_interfaces.py b/ansible_collections/cisco/ios/plugins/modules/ios_ospf_interfaces.py
index 386020f3a..fc2144296 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_ospf_interfaces.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_ospf_interfaces.py
@@ -408,19 +408,60 @@ EXAMPLES = """
- 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"
-# ]
+# Task Output:
+# ------------
+# before:
+# - name: GigabitEthernet0/0
+# - address_family:
+# - adjacency: true
+# afi: ipv6
+# priority: 20
+# process:
+# area_id: '105'
+# id: 55
+# transmit_delay: 30
+# name: GigabitEthernet0/1
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# cost:
+# interface_cost: 30
+# priority: 40
+# process:
+# area_id: '20'
+# id: 10
+# ttl_security:
+# hops: 50
+# set: true
+# name: GigabitEthernet0/2
+#
+# 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:
+# - name: GigabitEthernet0/0
+# - name: GigabitEthernet0/1
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# cost:
+# interface_cost: 30
+# priority: 40
+# process:
+# area_id: '20'
+# id: 10
+# ttl_security:
+# hops: 50
+# set: true
+# name: GigabitEthernet0/2
+#
# After state:
-# -------------
+# ------------
# router-ios#sh running-config | section ^interface
# interface GigabitEthernet0/0
# interface GigabitEthernet0/1
@@ -454,22 +495,51 @@ EXAMPLES = """
cisco.ios.ios_ospf_interfaces:
state: deleted
-# Commands Fired:
-# ---------------
+# Task Output:
+# ------------
+
+# before:
+# - name: GigabitEthernet0/0
+# - address_family:
+# - adjacency: true
+# afi: ipv6
+# priority: 20
+# process:
+# area_id: '105'
+# id: 55
+# transmit_delay: 30
+# name: GigabitEthernet0/1
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# cost:
+# interface_cost: 30
+# priority: 40
+# process:
+# area_id: '20'
+# id: 10
+# ttl_security:
+# hops: 50
+# set: true
+# name: GigabitEthernet0/2
+#
+# 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
#
-# "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:
+# - name: GigabitEthernet0/0
+# - name: GigabitEthernet0/1
+# - name: GigabitEthernet0/2
# After state:
# -------------
@@ -523,29 +593,67 @@ EXAMPLES = """
transmit_delay: 45
state: merged
-# Commands Fired:
-# ---------------
+# Task Output:
+# ------------
+# before: []
+#
+# 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
#
-# "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:
+# - name: GigabitEthernet0/0
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# bfd: true
+# cost:
+# interface_cost: 5
+# dead_interval:
+# time: 5
+# demand_circuit:
+# enable: true
+# ignore: true
+# network:
+# broadcast: true
+# priority: 25
+# process:
+# area_id: '30'
+# id: 10
+# resync_timeout: 10
+# shutdown: true
+# ttl_security:
+# hops: 50
+# set: true
+# - 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/2
# After state:
# -------------
@@ -599,7 +707,7 @@ EXAMPLES = """
# ipv6 ospf manet peering link-metrics 10
# interface GigabitEthernet0/2
-- name: Override provided OSPF Interfaces configuration
+- name: Override running config with provided OSPF Interfaces configuration
cisco.ios.ios_ospf_interfaces:
config:
- name: GigabitEthernet0/1
@@ -625,35 +733,97 @@ EXAMPLES = """
hops: 50
state: overridden
-# Commands Fired:
-# ---------------
+# Task Output:
+# ------------
+#
+# before:
+# - name: GigabitEthernet0/0
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# bfd: true
+# cost:
+# interface_cost: 5
+# dead_interval:
+# time: 5
+# demand_circuit:
+# enable: true
+# ignore: true
+# network:
+# broadcast: true
+# priority: 25
+# process:
+# area_id: '30'
+# id: 10
+# resync_timeout: 10
+# shutdown: true
+# ttl_security:
+# hops: 50
+# set: true
+# - 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/2
+#
+# 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
+#
+# parsed:
+# - name: GigabitEthernet0/0
+# - address_family:
+# - adjacency: true
+# afi: ipv6
+# priority: 20
+# process:
+# area_id: '105'
+# id: 55
+# transmit_delay: 30
+# name: GigabitEthernet0/1
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# cost:
+# interface_cost: 30
+# priority: 40
+# process:
+# area_id: '20'
+# id: 10
+# ttl_security:
+# hops: 50
+# set: true
+# name: GigabitEthernet0/2
#
-# "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:
# -------------
#
@@ -712,18 +882,102 @@ EXAMPLES = """
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"
-# ]
+# Task Output:
+# ------------
+#
+# before:
+# - name: GigabitEthernet0/0
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# bfd: true
+# cost:
+# interface_cost: 5
+# dead_interval:
+# time: 5
+# demand_circuit:
+# enable: true
+# ignore: true
+# network:
+# broadcast: true
+# priority: 25
+# process:
+# area_id: '30'
+# id: 10
+# resync_timeout: 10
+# shutdown: true
+# ttl_security:
+# hops: 50
+# set: true
+# - 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/2
+#
+# commands:
+# - interface GigabitEthernet0/2
+# - ipv6 ospf 55 area 105
+# - ipv6 ospf adjacency stagger disable
+# - ipv6 ospf priority 20
+# - ipv6 ospf transmit-delay 30
+#
+# after:
+# - name: GigabitEthernet0/0
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# bfd: true
+# cost:
+# interface_cost: 5
+# dead_interval:
+# time: 5
+# demand_circuit:
+# enable: true
+# ignore: true
+# network:
+# broadcast: true
+# priority: 25
+# process:
+# area_id: '30'
+# id: 10
+# resync_timeout: 10
+# shutdown: true
+# ttl_security:
+# hops: 50
+# set: true
+# - 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
+# - address_family:
+# - adjacency: true
+# afi: ipv6
+# priority: 20
+# process:
+# area_id: '105'
+# id: 55
+# transmit_delay: 30
+# name: GigabitEthernet0/2
# After state:
-# -------------
+# ------------
# router-ios#sh running-config | section ^interface
# interface GigabitEthernet0/0
# interface GigabitEthernet0/1
@@ -782,65 +1036,46 @@ EXAMPLES = """
config:
state: gathered
-# Module Execution Result:
-# ------------------------
+# Task Output:
+# ------------
#
-# "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"
-# }
-# ]
+# gathered:
+# - name: GigabitEthernet0/0
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# bfd: true
+# cost:
+# interface_cost: 5
+# dead_interval:
+# time: 5
+# demand_circuit:
+# enable: true
+# ignore: true
+# network:
+# broadcast: true
+# priority: 25
+# process:
+# area_id: '30'
+# id: 10
+# resync_timeout: 10
+# shutdown: true
+# ttl_security:
+# hops: 50
+# set: true
+# - 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/2
# After state:
# ------------
@@ -906,29 +1141,29 @@ EXAMPLES = """
transmit_delay: 45
state: rendered
-# Module Execution Result:
-# ------------------------
+# Task Output:
+# ------------
+#
+# 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
#
-# "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
@@ -961,80 +1196,60 @@ EXAMPLES = """
running_config: "{{ lookup('file', 'parsed.cfg') }}"
state: parsed
-# Module Execution Result:
-# ------------------------
+# Task Output:
+# ------------
#
-# "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"
-# }
-# ]
+# parsed:
+# - name: GigabitEthernet0/2
+# - address_family:
+# - adjacency: true
+# afi: ipv4
+# bfd: true
+# cost:
+# interface_cost: 5
+# dead_interval:
+# time: 5
+# demand_circuit:
+# enable: true
+# ignore: true
+# network:
+# broadcast: true
+# priority: 25
+# process:
+# area_id: '30'
+# id: 10
+# resync_timeout: 10
+# shutdown: true
+# ttl_security:
+# hops: 50
+# set: true
+# - 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 = """
before:
description: The configuration prior to the module execution.
returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged)
- type: dict
+ type: list
sample: >
This output will always be in the same format as the
module argspec.
after:
description: The resulting configuration after module execution.
returned: when changed
- type: dict
+ type: list
sample: >
This output will always be in the same format as the
module argspec.
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_ospfv2.py b/ansible_collections/cisco/ios/plugins/modules/ios_ospfv2.py
index a00b8d05d..6268ce46a 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_ospfv2.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_ospfv2.py
@@ -40,7 +40,9 @@ description:
This module configures and manages the Open Shortest Path First (OSPF)
version 2 on IOS platforms.
version_added: 1.0.0
-author: Sumit Jaiswal (@justjais)
+author:
+ - Sumit Jaiswal (@justjais)
+ - Vinay M (@roverflow)
notes:
- Tested against Cisco IOSXE Version 17.3 on CML.
- This module works with connection C(network_cli).
@@ -746,11 +748,11 @@ options:
type: bool
passive_interface:
description:
- - passive_interface param is deprecated and a newer param passive_interfaces
- with added functionality's is introduced, please meke use of the new available
- passive_interfaces instead.
- Suppress routing updates on an interface (GigabitEthernet A/B)
- Interface name with respective interface number
+ - passive_interface param is DEPRECATED and a newer param passive_interfaces
+ with added functionality's is introduced, this attribute will be removed after
+ 2026-07-18.
type: str
passive_interfaces:
description: Suppress routing updates on an interface
@@ -964,96 +966,6 @@ options:
"""
EXAMPLES = """
-# 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:
@@ -1098,7 +1010,7 @@ EXAMPLES = """
passive_interfaces:
default: true
interface:
- set_interface: False
+ set_interface: false
name:
- GigabitEthernet0/1
- GigabitEthernet0/2
@@ -1124,35 +1036,93 @@ EXAMPLES = """
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"
-# "passive-interface default"
-# "no passive-interface GigabitEthernet0/1"
-# ]
+# Task Output:
+# ------------
+
+# before: {}
+# commands:
+# - router ospf 200 vrf blue
+# - auto-cost reference-bandwidth 4
+# - domain-id 192.0.3.1
+# - max-metric router-lsa on-startup 100
+# - area 10 capability default-exclusion
+# - distribute-list 10 out
+# - distribute-list 123 in
+# - router ospf 1
+# - default-information originate
+# - max-metric router-lsa on-startup 110
+# - area 5 capability default-exclusion
+# - area 10 authentication message-digest
+# - area 10 default-cost 10
+# - area 10 nssa default-information-originate metric 10
+# - area 10 nssa translate type7 suppress-fa
+# - 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
+# - passive-interface default
+# - no passive-interface GigabitEthernet0/1
+# - no passive-interface GigabitEthernet0/2
+
+# after:
+# processes:
+# - areas:
+# - area_id: '10'
+# capability: true
+# auto_cost:
+# reference_bandwidth: 4
+# set: true
+# 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
+# - areas:
+# - area_id: '5'
+# 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
+# passive_interfaces:
+# default: true
+# interface:
+# name:
+# - GigabitEthernet2
+# - GigabitEthernet1
+# set_interface: false
+# process_id: 1
# After state:
-# -------------
+# ------------
#
# router-ios#sh running-config | section ^router ospf
# router ospf 200 vrf blue
@@ -1164,18 +1134,20 @@ EXAMPLES = """
# distribute-list 123 in
# router ospf 1
# max-metric router-lsa on-startup 110
+# area 5 capability default-exclusion
# 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
+# passive-interface default
+# no passive-interface GigabitEthernet1
+# no passive-interface GigabitEthernet2
# network 198.51.100.0 0.0.0.255 area 5
# default-information originate
-# passive-interface default
-# no passive-interface GigabitEthernet0/1
-# no passive-interface GigabitEthernet0/2
-# Using overridden
+# Using replaced
# Before state:
# -------------
@@ -1190,15 +1162,20 @@ EXAMPLES = """
# distribute-list 123 in
# router ospf 1
# max-metric router-lsa on-startup 110
+# area 5 capability default-exclusion
# 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
+# passive-interface default
+# no passive-interface GigabitEthernet1
+# no passive-interface GigabitEthernet2
# network 198.51.100.0 0.0.0.255 area 5
# default-information originate
-- name: Override provided OSPF V2 configuration
+- name: Replace running config with provided OSPF V2 configuration
cisco.ios.ios_ospfv2:
config:
processes:
@@ -1234,35 +1211,156 @@ EXAMPLES = """
default_information_originate:
metric: 10
translate: suppress-fa
- state: overridden
+ state: replaced
-# Commands Fired:
-# ---------------
+# Task Output:
+# ------------
#
-# "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"
+# before:
+# processes:
+# - areas:
+# - area_id: '10'
+# capability: true
+# auto_cost:
+# reference_bandwidth: 4
+# set: true
+# 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
+# - areas:
+# - area_id: '5'
+# 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
+# passive_interfaces:
+# default: true
+# interface:
+# name:
+# - GigabitEthernet2
+# - GigabitEthernet1
+# set_interface: false
+# process_id: 1
+#
+# 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:
+# processes:
+# - areas:
+# - area_id: '10'
+# authentication:
+# message_digest: true
+# default_cost: 10
+# domain_id:
+# ip_address:
+# address: 192.0.4.1
+# max_metric:
+# on_startup:
+# time: 200
+# router_lsa: true
+# maximum_paths: 15
+# process_id: 200
+# ttl_security:
+# hops: 7
+# vrf: blue
+# - areas:
+# - area_id: '5'
+# authentication:
+# message_digest: true
+# nssa:
+# default_information_originate:
+# metric: 10
+# translate: suppress-fa
+# auto_cost:
+# reference_bandwidth: 5
+# set: true
+# domain_id:
+# ip_address:
+# address: 192.0.5.1
+# process_id: 100
+# vrf: ospf_vrf
+# - 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
# After state:
# -------------
-#
# router-ios#sh running-config | section ^router ospf
# router ospf 200 vrf blue
# domain-id 192.0.4.1
@@ -1277,8 +1375,20 @@ EXAMPLES = """
# 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 replaced
+# Using overridden
# Before state:
# -------------
@@ -1301,7 +1411,7 @@ EXAMPLES = """
# network 198.51.100.0 0.0.0.255 area 5
# default-information originate
-- name: Replaced provided OSPF V2 configuration
+- name: Override provided OSPF V2 configuration
cisco.ios.ios_ospfv2:
config:
processes:
@@ -1337,32 +1447,117 @@ EXAMPLES = """
default_information_originate:
metric: 10
translate: suppress-fa
- state: replaced
+ state: overridden
-# 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"
-# ]
+# Task Output:
+# ------------
+# before:
+# processes:
+# - areas:
+# - area_id: '10'
+# capability: true
+# auto_cost:
+# reference_bandwidth: 4
+# set: true
+# 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
+# - areas:
+# - area_id: '10'
+# authentication:
+# message_digest: true
+# default_cost: 10
+# filter_list:
+# - 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
+#
+# 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:
+# processes:
+# - areas:
+# - area_id: '10'
+# authentication:
+# message_digest: true
+# default_cost: 10
+# domain_id:
+# ip_address:
+# address: 192.0.4.1
+# max_metric:
+# on_startup:
+# time: 200
+# router_lsa: true
+# maximum_paths: 15
+# process_id: 200
+# ttl_security:
+# hops: 7
+# vrf: blue
+# - areas:
+# - area_id: '5'
+# authentication:
+# message_digest: true
+# nssa:
+# default_information_originate:
+# metric: 10
+# translate: suppress-fa
+# auto_cost:
+# reference_bandwidth: 5
+# set: true
+# domain_id:
+# ip_address:
+# address: 192.0.5.1
+# process_id: 100
+# vrf: ospf_vrf
+#
# After state:
-# -------------
+# ------------
+#
# router-ios#sh running-config | section ^router ospf
# router ospf 200 vrf blue
# domain-id 192.0.4.1
@@ -1377,19 +1572,214 @@ EXAMPLES = """
# area 5 authentication message-digest
# area 5 nssa default-information-originate metric 10
# area 5 nssa translate type7 suppress-fa
+
+# 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 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
+- name: Delete provided OSPF V2 processes
+ cisco.ios.ios_ospfv2:
+ config:
+ processes:
+ - process_id: 1
+ - process_id: 200
+ vrf: blue
+ state: deleted
+
+# Task Output:
+# ------------
+
+# before:
+# processes:
+# - areas:
+# - area_id: '10'
+# capability: true
+# auto_cost:
+# reference_bandwidth: 4
+# set: true
+# 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
+# - areas:
+# - area_id: '10'
+# authentication:
+# message_digest: true
+# default_cost: 10
+# filter_list:
+# - 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
+#
+# commands:
+# - no router ospf 1
+#
+# processes:
+# - areas:
+# - area_id: '10'
+# capability: true
+# auto_cost:
+# reference_bandwidth: 4
+# set: true
+# 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
+
+# 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
+
+# Task Output:
+# ------------
+
+# before:
+# processes:
+# - areas:
+# - area_id: '10'
+# capability: true
+# auto_cost:
+# reference_bandwidth: 4
+# set: true
+# 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
+# - areas:
+# - area_id: '10'
+# authentication:
+# message_digest: true
+# default_cost: 10
+# filter_list:
+# - 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
+#
+# commands:
+# - no router ospf 200 vrf blue
+# - no router ospf 1
+#
+# after: {}
+#
+# After state:
+# ------------
+# router-ios#sh running-config | section ^router ospf
+# router-ios#
+
# Using Gathered
# Before state:
@@ -1413,103 +1803,61 @@ EXAMPLES = """
# network 198.51.100.0 0.0.0.255 area 5
# default-information originate
-- name: Gather OSPFV2 provided configurations
+- name: Gather OSPFV2 running configurations
cisco.ios.ios_ospfv2:
config:
state: gathered
-# Module Execution Result:
-# ------------------------
+# Task Output:
+# ------------
#
-# "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"
-# }
-# ]
-# }
+# gathered:
+# processes:
+# - areas:
+# - area_id: '10'
+# capability: true
+# auto_cost:
+# reference_bandwidth: 4
+# set: true
+# 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
+# - areas:
+# - area_id: '10'
+# authentication:
+# message_digest: true
+# default_cost: 10
+# filter_list:
+# - 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
+
# After state:
# ------------
@@ -1589,30 +1937,30 @@ EXAMPLES = """
direction: in
state: rendered
-# Module Execution Result:
-# ------------------------
+# Task Output:
+# ------------
+
+# 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
#
-# "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
@@ -1631,38 +1979,26 @@ EXAMPLES = """
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
-# }
-# ]
-# }
+# Task Output:
+# ------------
+
+# parsed:
+# processes:
+# - areas:
+# - area_id: '5'
+# authentication:
+# message_digest: true
+# nssa:
+# default_information_originate:
+# metric: 10
+# translate: suppress-fa
+# auto_cost:
+# reference_bandwidth: 5
+# set: true
+# domain_id:
+# ip_address:
+# address: 192.0.5.1
+# process_id: 100
"""
RETURN = """
@@ -1685,6 +2021,28 @@ commands:
returned: always
type: list
sample: ['router ospf 200 vrf blue', 'auto-cost reference-bandwidth 5', 'domain-id 192.0.4.1']
+rendered:
+ description: The provided configuration in the task rendered in device-native format (offline).
+ returned: when I(state) is C(rendered)
+ type: list
+ sample:
+ - router ospf 200 vrf blue
+ - auto-cost reference-bandwidth 4
+ - distribute-list 10 out
+gathered:
+ description: Facts about the network resource gathered from the remote device as structured data.
+ returned: when I(state) is C(gathered)
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+parsed:
+ description: The device native config provided in I(running_config) option parsed into structured data as per module argspec.
+ returned: when I(state) is C(parsed)
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
"""
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_ospfv3.py b/ansible_collections/cisco/ios/plugins/modules/ios_ospfv3.py
index 376b23645..321e1cfc9 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_ospfv3.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_ospfv3.py
@@ -1310,91 +1310,6 @@ options:
"""
EXAMPLES = """
-# 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
@@ -1452,26 +1367,189 @@ EXAMPLES = """
reference_bandwidth: 4
state: merged
-# Commands Fired:
-# ---------------
+# Task Output:
+# ------------
+
+# before: {}
+#
+# 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:
+# 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 deleted
+
+# Before state:
+# -------------
#
-# "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"
-# ]
+# 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
+
+# Task Output:
+# ------------
+# before:
+# 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
+#
+# commands:
+# - no router ospfv3 1
+#
+# parsed:
+# processes:
+# - 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 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
@@ -1491,6 +1569,64 @@ EXAMPLES = """
# adjacency stagger 200 200
# exit-address-family
+- name: Delete all OSPF processes
+ cisco.ios.ios_ospfv3:
+ state: deleted
+
+# Task Output:
+# ------------
+
+# before:
+# 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
+#
+# commands:
+# - no router ospfv3 200
+# - no router ospfv3 1
+#
+# after: {}
+#
+# After state:
+# ------------
+# router-ios#sh running-config | section ^router ospfv3
+# router-ios#
+
+
# Using overridden
# Before state:
@@ -1540,23 +1676,86 @@ EXAMPLES = """
metric: 10
state: overridden
-# Commands Fired:
-# ---------------
+# Task Output:
+# ------------
+
+# before:
+# 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
#
-# "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"
-# ]
+# 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:
+# processes:
+# - address_family:
+# - adjacency:
+# max_adjacency: 50
+# min_adjacency: 50
+# afi: ipv4
+# areas:
+# - area_id: '200'
+# nssa:
+# default_information_originate:
+# metric: 200
+# nssa_only: true
+# unicast: true
+# areas:
+# - area_id: '10'
+# nssa:
+# default_information_originate:
+# metric: 10
+# max_metric:
+# on_startup:
+# time: 200
+# router_lsa: true
+# process_id: 200
# After state:
-# -------------
+# ------------
#
# router-ios#sh running-config | section ^router ospfv3
# router ospfv3 200
@@ -1590,7 +1789,7 @@ EXAMPLES = """
# adjacency stagger 200 200
# exit-address-family
-- name: Replaced provided OSPFV3 configuration
+- name: Perform replace with provided configurations.
cisco.ios.ios_ospfv3:
config:
processes:
@@ -1618,19 +1817,103 @@ EXAMPLES = """
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"
-# ]
+# Task Output:
+# ------------
+# before:
+# 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
+#
+# 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:
+# 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:
+# - afi: ipv4
+# areas:
+# - area_id: '200'
+# nssa:
+# default_information_originate:
+# metric: 200
+# nssa_only: true
+# unicast: true
+# areas:
+# - area_id: '10'
+# nssa:
+# default_information_originate:
+# metric: 10
+# max_metric:
+# on_startup:
+# time: 200
+# router_lsa: true
+# process_id: 200
+#
# After state:
# -------------
# router-ios#sh running-config | section ^router ospfv3
@@ -1678,76 +1961,47 @@ EXAMPLES = """
config:
state: gathered
-# Module Execution Result:
-# ------------------------
+# Task Output:
+# ------------
#
-# "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
-# }
-# ]
-# }
+# 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
+# - 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:
# ------------
@@ -1819,24 +2073,24 @@ EXAMPLES = """
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"
-# ]
+# Task Output:
+# ------------
+
+# 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
@@ -1859,60 +2113,52 @@ EXAMPLES = """
# adjacency stagger 200 200
# exit-address-family
-- name: Parse the provided configuration with the existing running configuration
+- name: Parse the provided configuration and display structured ospfv3 facts.
cisco.ios.ios_ospfv3:
running_config: "{{ lookup('file', 'parsed.cfg') }}"
state: parsed
-# Module Execution Result:
-# ------------------------
+# Task Output:
+# ------------
#
-# "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
-# }
-# ]
-# }
-
+# 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
+# - 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
"""
RETURN = """
@@ -1935,6 +2181,28 @@ commands:
returned: always
type: list
sample: ['router ospfv3 1', 'address-family ipv4 unicast vrf blue', 'adjacency stagger 50 50']
+rendered:
+ description: The provided configuration in the task rendered in device-native format (offline).
+ returned: when I(state) is C(rendered)
+ type: list
+ sample:
+ - router ospfv3 1
+ - max-metric router-lsa on-startup 110
+ - area 10 nssa default-information-originate metric 10
+gathered:
+ description: Facts about the network resource gathered from the remote device as structured data.
+ returned: when I(state) is C(gathered)
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+parsed:
+ description: The device native config provided in I(running_config) option parsed into structured data as per module argspec.
+ returned: when I(state) is C(parsed)
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
"""
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_ping.py b/ansible_collections/cisco/ios/plugins/modules/ios_ping.py
index c5fdd8153..23175c159 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_ping.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_ping.py
@@ -51,6 +51,10 @@ options:
description:
- The source IP Address.
type: str
+ size:
+ description:
+ - Size of the packet to send.
+ type: int
egress:
description:
- Force egress interface bypassing routing.
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_prefix_lists.py b/ansible_collections/cisco/ios/plugins/modules/ios_prefix_lists.py
index 23c9de9e1..311834c76 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_prefix_lists.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_prefix_lists.py
@@ -19,7 +19,9 @@ short_description: Resource module to configure prefix lists.
description:
- This module configures and manages the attributes of prefix list on Cisco IOS.
version_added: 2.2.0
-author: Sumit Jaiswal (@justjais)
+author:
+ - Sagar Paul (@KB-perByte)
+ - Sumit Jaiswal (@justjais)
notes:
- Tested against Cisco IOSXE Version 17.3 on CML.
- This module works with connection C(network_cli).
@@ -151,16 +153,85 @@ EXAMPLES = """
- name: test_prefix
state: deleted
-# Commands Fired:
-# ---------------
-#
-# "commands": [
-# "no ip prefix-list 10",
-# "no ip prefix-list test_prefix"
-# ]
+# Task Output
+# -------------
+# before:
+# - afi: ipv4
+# prefix_lists:
+# - description: this is test description
+# entries:
+# - action: deny
+# le: 15
+# prefix: 1.0.0.0/8
+# sequence: 5
+# - action: deny
+# ge: 10
+# prefix: 35.0.0.0/8
+# sequence: 10
+# - action: deny
+# ge: 15
+# prefix: 12.0.0.0/8
+# sequence: 15
+# - action: deny
+# ge: 20
+# le: 21
+# prefix: 14.0.0.0/8
+# sequence: 20
+# name: '10'
+# - description: this is test
+# entries:
+# - action: deny
+# ge: 15
+# prefix: 12.0.0.0/8
+# sequence: 50
+# name: test
+# - description: this is for prefix-list
+# entries:
+# - action: deny
+# ge: 10
+# le: 15
+# prefix: 35.0.0.0/8
+# sequence: 5
+# - action: deny
+# ge: 20
+# prefix: 35.0.0.0/8
+# sequence: 10
+# name: test_prefix
+# - afi: ipv6
+# prefix_lists:
+# - description: this is ipv6 prefix-list
+# entries:
+# - action: deny
+# ge: 80
+# prefix: 2001:DB8:0:4::/64
+# sequence: 10
+# name: test_ipv6
+# commands:
+# - no ip prefix-list 10
+# - no ip prefix-list test_prefix
+# after:
+# - afi: ipv4
+# prefix_lists:
+# - description: this is test
+# entries:
+# - action: deny
+# ge: 15
+# prefix: 12.0.0.0/8
+# sequence: 50
+# name: test
+# - afi: ipv6
+# prefix_lists:
+# - description: this is ipv6 prefix-list
+# entries:
+# - action: deny
+# ge: 80
+# prefix: 2001:DB8:0:4::/64
+# sequence: 10
+# name: test_ipv6
+
# After state:
-# -------------
+# ------------
# router-ios#sh running-config | section ^ip prefix-list|^ipv6 prefix-list
# ip prefix-list test description this is test
# ip prefix-list test seq 50 deny 12.0.0.0/8 ge 15
@@ -192,14 +263,74 @@ EXAMPLES = """
- afi: ipv4
state: deleted
-# Commands Fired:
-# ---------------
-#
-# "commands": [
-# "no ip prefix-list test",
-# "no ip prefix-list 10",
-# "no ip prefix-list test_prefix"
-# ]
+# Task Output
+# -------------
+# before:
+# - afi: ipv4
+# prefix_lists:
+# - description: this is test description
+# entries:
+# - action: deny
+# le: 15
+# prefix: 1.0.0.0/8
+# sequence: 5
+# - action: deny
+# ge: 10
+# prefix: 35.0.0.0/8
+# sequence: 10
+# - action: deny
+# ge: 15
+# prefix: 12.0.0.0/8
+# sequence: 15
+# - action: deny
+# ge: 20
+# le: 21
+# prefix: 14.0.0.0/8
+# sequence: 20
+# name: '10'
+# - description: this is test
+# entries:
+# - action: deny
+# ge: 15
+# prefix: 12.0.0.0/8
+# sequence: 50
+# name: test
+# - description: this is for prefix-list
+# entries:
+# - action: deny
+# ge: 10
+# le: 15
+# prefix: 35.0.0.0/8
+# sequence: 5
+# - action: deny
+# ge: 20
+# prefix: 35.0.0.0/8
+# sequence: 10
+# name: test_prefix
+# - afi: ipv6
+# prefix_lists:
+# - description: this is ipv6 prefix-list
+# entries:
+# - action: deny
+# ge: 80
+# prefix: 2001:DB8:0:4::/64
+# sequence: 10
+# name: test_ipv6
+# commands:
+# - "no ip prefix-list test",
+# - "no ip prefix-list 10",
+# - "no ip prefix-list test_prefix"
+# after:
+# - afi: ipv6
+# prefix_lists:
+# - description: this is ipv6 prefix-list
+# entries:
+# - action: deny
+# ge: 80
+# prefix: 2001:DB8:0:4::/64
+# sequence: 10
+# name: test_ipv6
+
# After state:
# -------------
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_service.py b/ansible_collections/cisco/ios/plugins/modules/ios_service.py
index 89fe2ed47..46c456569 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_service.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_service.py
@@ -210,6 +210,7 @@ options:
choices:
- merged
- replaced
+ - overridden
- deleted
- gathered
- rendered
@@ -217,6 +218,7 @@ options:
default: merged
description:
- The state the configuration should be left in.
+ - The module have declaratively similar behavior for replaced and overridden state.
- Refer to examples for more details.
type: str
"""
@@ -434,7 +436,7 @@ EXAMPLES = """
# service dhcp
# service password-recovery
-- name: "Delete service configuration and restore default configuration for some importants service (those with a default value in module)"
+- name: "Delete service configuration and restore default configuration for some important service (those with a default value in module)"
cisco.ios.ios_service:
state: deleted
@@ -471,8 +473,8 @@ EXAMPLES = """
# prompt: true
# slave_log: true
-#·After·state:
-#·------------
+# After state:
+# ------------
#
# router-ios#show running-config all | section ^service
# service slave-log
@@ -676,6 +678,7 @@ def main():
required_if=[
["state", "merged", ["config"]],
["state", "replaced", ["config"]],
+ ["state", "overridden", ["config"]],
["state", "rendered", ["config"]],
["state", "parsed", ["running_config"]],
],
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_snmp_server.py b/ansible_collections/cisco/ios/plugins/modules/ios_snmp_server.py
index 5cfc735d8..094d5c48d 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_snmp_server.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_snmp_server.py
@@ -121,6 +121,12 @@ options:
context:
description: Specify a context to associate with the group
type: str
+ match:
+ choices:
+ - exact
+ - prefix
+ description: Specify a context name match criteria
+ type: str
version_option:
choices:
- auth
@@ -173,9 +179,9 @@ options:
elements: str
version:
choices:
- - "1"
+ - '1'
- 2c
- - "3"
+ - '3'
description: Notification message SNMP version.
type: str
version_option:
@@ -274,6 +280,9 @@ options:
traps:
description: Enable SNMP Traps
suboptions:
+ aaa_server:
+ description: Enable SNMP AAA Server traps
+ type: bool
auth_framework:
description: Enable SNMP CISCO-AUTH-FRAMEWORK-MIB traps
suboptions:
@@ -343,6 +352,32 @@ options:
description: Enable SNMP STP Bridge MIB topologychange traps
type: bool
type: dict
+ bulkstat:
+ description: Allow Data-Collection-MIB Collection notifications
+ suboptions:
+ enable:
+ description: Enable Data-Collection-MIB Collection and Transfert notifications
+ type: bool
+ collection:
+ description: Enable Data-Collection-MIB Collection notifications
+ type: bool
+ transfer:
+ description: Enable Data-Collection-MIB Transfer notifications
+ type: bool
+ type: dict
+ call_home:
+ description: SNMP CISCO-CALLHOME-MIB traps
+ suboptions:
+ enable:
+ description: Enable SNMP CISCO-CALLHOME-MIB traps
+ type: bool
+ message_send_fail:
+ description: Enable SNMP ccmSmtpMsgSendFailNotif notification
+ type: bool
+ server_fail:
+ description: Enable SNMP ccmSmtpServerFailNotif notification
+ type: bool
+ type: dict
casa:
description: Enable SNMP config casa traps
type: bool
@@ -409,21 +444,59 @@ options:
entity:
description: Enable SNMP entity traps
type: bool
+ entity_diag:
+ description: Allow SNMP CISCO-ENTITY-DIAG-MIB traps
+ suboptions:
+ boot_up_fail:
+ description: Enable SNMP ceDiagBootUpFailedNotif traps
+ type: bool
+ enable:
+ description: Enable SNMP CISCO-ENTITY-DIAG-MIB traps
+ type: bool
+ hm_test_recover:
+ description: Enable SNMP ceDiagHMTestRecoverNotif traps
+ type: bool
+ hm_thresh_reached:
+ description: Enable SNMP ceDiagHMThresholdReachedNotif traps
+ type: bool
+ scheduled_test_fail:
+ description: Enable SNMP ceDiagScheduledTestFailedNotif traps
+ type: bool
+ type: dict
+ entity_perf:
+ description: Allow SNMP CISCO-ENTITY-PERFORMANCE-MIB traps
+ suboptions:
+ enable:
+ description: Enable SNMP CISCO-ENTITY-PERFORMANCE-MIB traps
+ type: bool
+ throughput_notif:
+ description: Enable ENTITY PERFORMANCE MIB throughput traps
+ type: bool
+ type: dict
+ entity_state:
+ description: Enable SNMP ENTITY-STATE-MIB traps
+ type: bool
energywise:
description: Enable SNMP energywise traps
type: bool
envmon:
- description: Allow envmon related traps
+ description: Enable SNMP environmental monitor traps
suboptions:
+ enable:
+ description: Enable/disable envmon traps
+ type: bool
fan:
- description: Enable SNMP envmon fan traps
+ description:
+ - Enable SNMP envmon fan traps
+ - This option is DEPRECATED and is replaced with fan_enable which accepts bool as input
+ - This attribute will be removed after 2024-09-01
suboptions:
- shutdown:
- description: Enable SNMP environmental monitor shutdown traps
- type: bool
enable:
description: Enable/disable fan traps
type: bool
+ shutdown:
+ description: Enable SNMP environmental monitor shutdown traps
+ type: bool
status:
description: Enable SNMP environmental status change traps
type: bool
@@ -434,6 +507,9 @@ options:
description: Enable SNMP environmental monitor temperature traps
type: bool
type: dict
+ fan_enable:
+ description: Enable SNMP envmon fan traps
+ type: bool
shutdown:
description: Enable SNMP environmental monitor shutdown traps
type: bool
@@ -447,6 +523,9 @@ options:
description: Enable SNMP environmental monitor temperature traps
type: bool
type: dict
+ errdisable:
+ description: Enable SNMP errdisable notifications
+ type: bool
ethernet:
description: Allow ethernet traps
suboptions:
@@ -455,7 +534,7 @@ options:
suboptions:
alarm:
description: Enable SNMP Ethernet CFM fault alarm trap
- type: bool
+ type: bool
cc:
description: Enable SNMP Ethernet CC trap
type: dict
@@ -503,12 +582,38 @@ options:
type: bool
type: dict
type: dict
+ ether_oam:
+ description: Enable SNMP ethernet oam traps
+ type: bool
event_manager:
description: Enable SNMP event-manager traps
type: bool
- flowmon:
- description: Enable SNMP flowmon traps
- type: bool
+ flash:
+ description: SNMP FLASH notifications
+ suboptions:
+ enable:
+ description: Enable SNMP FLASH notifications
+ type: bool
+ insertion:
+ description: Enable SNMP Flash Insertion notifications
+ type: bool
+ lowspace:
+ description: Enable SNMP Flash Low Space notifications
+ type: bool
+ removal:
+ description: Enable SNMP Flash Removal notifications
+ type: bool
+ type: dict
+ flex_links:
+ description: SNMP FLEX Links traps
+ suboptions:
+ enable:
+ description: Enable SNMP FLEX Links traps
+ type: bool
+ status:
+ description: Enable SNMP FLEX Links status change traps
+ type: bool
+ type: dict
firewall:
description: Enable SNMP firewall traps
suboptions:
@@ -519,6 +624,9 @@ options:
description: Enable firewall server status change trap
type: bool
type: dict
+ flowmon:
+ description: Enable SNMP flowmon traps
+ type: bool
frame_relay:
description: Allow frame-relay traps
suboptions:
@@ -608,6 +716,22 @@ options:
ipsla:
description: Enable SNMP ipsla traps
type: bool
+ isis:
+ description: Enable SNMP isis traps
+ type: bool
+ l2tc:
+ description: Allow SNMP L2 Tunnel Config traps
+ suboptions:
+ enable:
+ description: Enable SNMP L2 Tunnel Config traps
+ type: bool
+ sys_threshold:
+ description: Enable SNMP L2TC System threshold traps
+ type: bool
+ threshold:
+ description: Enable SNMP L2 Tunnel Config threshold traps
+ type: bool
+ type: dict
l2tun:
description: Allow SNMP l2tun traps
suboptions:
@@ -618,15 +742,243 @@ options:
description: Enable BFD session traps
type: bool
type: dict
+ license:
+ description: Enable license traps
+ type: bool
+ lisp:
+ description: Enable SNMP LISP MIB traps
+ type: bool
+ local_auth:
+ description: Enable SNMP local auth traps
+ type: bool
+ mac_notification:
+ description: Allow SNMP MAC Notification traps
+ suboptions:
+ enable:
+ description: Enable SNMP MAC Notification traps
+ type: bool
+ change:
+ description: Enable SNMP MAC Change traps
+ type: bool
+ move:
+ description: Enable SNMP MAC Move traps
+ type: bool
+ threshold:
+ description: Enable SNMP MAC Threshold traps
+ type: bool
+ type: dict
+ memory:
+ description: Allow MEMORY traps
+ suboptions:
+ enable:
+ description: Enable MEMORY traps
+ type: bool
+ bufferpeak:
+ description: Enable SNMP Memory Bufferpeak traps
+ type: bool
+ type: dict
+ mpls:
+ description: Enable SNMP mpls traps
+ suboptions:
+ fast_reroute:
+ description: Allow SNMP MPLS fast reroute traps
+ suboptions:
+ enable:
+ description: Enable SNMP MPLS fast reroute traps
+ type: bool
+ protected:
+ description: Enable MPLS fast reroute protection traps
+ type: bool
+ type: dict
+ ldp:
+ description: Allow SNMP MPLS label distribution protocol traps
+ suboptions:
+ enable:
+ description: Enable SNMP MPLS label distribution protocol traps
+ type: bool
+ pv_limit:
+ description: Enable MPLS LDP path vector limit mismatch traps
+ type: bool
+ session_down:
+ description: Enable MPLS LDP session down traps
+ type: bool
+ session_up:
+ description: Enable MPLS LDP session up traps
+ type: bool
+ threshold:
+ description: Enable MPLS LDP threshold exceeded traps
+ type: bool
+ type: dict
+ rfc:
+ description: Enable SNMP MPLS RFC traps
+ suboptions:
+ ldp:
+ description: Allow SNMP MPLS label distribution protocol RFC traps
+ suboptions:
+ enable:
+ description: Enable SNMP MPLS label distribution protocol RFC traps
+ type: bool
+ pv_limit:
+ description: Enable MPLS LDP path vector limit mismatch RFC traps
+ type: bool
+ session_down:
+ description: Enable MPLS LDP session down RFC traps
+ type: bool
+ session_up:
+ description: Enable MPLS LDP session up RFC traps
+ type: bool
+ threshold:
+ description: Enable MPLS LDP threshold exceeded RFC traps
+ type: bool
+ type: dict
+ traffic_eng:
+ description: Allow SNMP MPLS traffic engineering RFC traps
+ suboptions:
+ enable:
+ description: Enable SNMP MPLS traffic engineering RFC traps
+ type: bool
+ down:
+ description: Enable MPLS TE tunnel down RFC traps
+ type: bool
+ reoptimized:
+ description: Enable MPLS TE tunnel reoptimized RFC traps
+ type: bool
+ reroute:
+ description: Enable MPLS TE tunnel reroute RFC traps
+ type: bool
+ up:
+ description: Enable MPLS TE tunnel up RFC traps
+ type: bool
+ type: dict
+ vpn:
+ description: Allow SNMP MPLS Virtual Private Network RFC traps
+ suboptions:
+ enable:
+ description: Enable SNMP MPLS Virtual Private Network RFC traps
+ type: bool
+ illegal_label:
+ description: Enable MPLS VPN illegal label threshold exceeded RFC traps
+ type: bool
+ max_thresh_cleared:
+ description: Enable MPLS VPN maximum threshold cleared RFC traps
+ type: bool
+ max_threshold:
+ description: Enable MPLS VPN maximum threshold exceeded RFC traps
+ type: bool
+ mid_threshold:
+ description: Enable MPLS VPN middle threshold exceeded RFC traps
+ type: bool
+ vrf_down:
+ description: Enable MPLS VPN vrf down RFC traps
+ type: bool
+ vrf_up:
+ description: Enable MPLS VPN vrf up RFC traps
+ type: bool
+ type: dict
+ type: dict
+ traffic_eng:
+ description: Allow SNMP MPLS traffic engineering traps
+ suboptions:
+ enable:
+ description: Enable SNMP MPLS traffic engineering traps
+ type: bool
+ down:
+ description: Enable MPLS TE tunnel down traps
+ type: bool
+ reroute:
+ description: Enable MPLS TE tunnel reroute traps
+ type: bool
+ up:
+ description: Enable MPLS TE tunnel up traps
+ type: bool
+ type: dict
+ vpn:
+ description: Allow SNMP MPLS Virtual Private Network traps
+ suboptions:
+ enable:
+ description: Enable SNMP MPLS Virtual Private Network traps
+ type: bool
+ illegal_label:
+ description: Enable MPLS VPN illegal label threshold exceeded traps
+ type: bool
+ max_thresh_cleared:
+ description: Enable MPLS VPN maximum threshold cleared traps
+ type: bool
+ max_threshold:
+ description: Enable MPLS VPN maximum threshold exceeded traps
+ type: bool
+ mid_threshold:
+ description: Enable MPLS VPN middle threshold exceeded traps
+ type: bool
+ vrf_down:
+ description: Enable MPLS VPN vrf down traps
+ type: bool
+ vrf_up:
+ description: Enable MPLS VPN vrf up traps
+ type: bool
+ type: dict
+ type: dict
+ mpls_vpn:
+ description:
+ - Enable SNMP mpls traps
+ - This option is DEPRECATED and is replaced with mpls which accepts dict as input
+ - This attribute will be removed after 2024-09-01
+ type: bool
msdp:
description: Enable SNMP msdp traps
type: bool
mvpn:
description: Enable SNMP mvpn traps
type: bool
- mpls_vpn:
- description: Enable SNMP mpls traps
- type: bool
+ nhrp:
+ description: Allow SNMP NHRP traps
+ suboptions:
+ enable:
+ description: Enable SNMP NHRP traps
+ type: bool
+ nhc:
+ description: Allow Next Hop Client traps
+ suboptions:
+ enable:
+ description: Enable Next Hop Client traps
+ type: bool
+ down:
+ description: Enable Next Hop Client down trap
+ type: bool
+ up:
+ description: Enable Next Hop Client up trap
+ type: bool
+ type: dict
+ nhp:
+ description: Allow Next Hop Peer traps
+ suboptions:
+ enable:
+ description: Enable Next Hop Peer traps
+ type: bool
+ down:
+ description: Enable Next Hop Peer down trap
+ type: bool
+ up:
+ description: Enable Next Hop Peer up trap
+ type: bool
+ type: dict
+ nhs:
+ description: Allow Next Hop Server traps
+ suboptions:
+ enable:
+ description: Enable Next Hop Server traps
+ type: bool
+ down:
+ description: Enable Next Hop Server down trap
+ type: bool
+ up:
+ description: Enable Next Hop Server up trap
+ type: bool
+ type: dict
+ quota_exceeded:
+ description: Enable quota-exceeded trap
+ type: bool
+ type: dict
ospf:
description: Allow ospf related traps
suboptions:
@@ -673,6 +1025,65 @@ options:
description: Enable/disable state change traps
type: bool
type: dict
+ ospfv3:
+ description: Allow OSPFv3 related traps
+ suboptions:
+ errors:
+ description: Error traps
+ suboptions:
+ enable:
+ description: Enable Error traps
+ type: bool
+ bad_packet:
+ description: Packet parse failure on non-virtual interfaces
+ type: bool
+ config_error:
+ description: Config mismatch errors on non-virtual interfaces
+ type: bool
+ virt_bad_packet:
+ description: Packet parse failure on virtual interfaces
+ type: bool
+ virt_config_error:
+ description: Config mismatch errors on virtual interfaces
+ type: bool
+ type: dict
+ rate_limit:
+ description:
+ - Trap rate limit values
+ - Rate limit window size in seconds (between 2 and 60)
+ type: int
+ state_change:
+ description: State change traps
+ suboptions:
+ enable:
+ description: Enable State change traps
+ type: bool
+ if_state_change:
+ description: Non_virtual interface state changes
+ type: bool
+ neighbor_restart_helper_status_change:
+ description: Neighbor graceful restart helper status changes
+ type: bool
+ neighbor_state_change:
+ description: Non_virtual neighbor state changes
+ type: bool
+ nssa_translator_status_change:
+ description: NSSA translator status changes
+ type: bool
+ restart_status_change:
+ description: Graceful restart status changes
+ type: bool
+ virtif_state_change:
+ description: Virtual interface state changes
+ type: bool
+ vn_restart_helper_status_change:
+ description: Virtual neighbor graceful restart helper status changes
+ type: bool
+ vn_state_change:
+ description: Virtual neighbor state changes
+ type: bool
+ type: dict
+ type: dict
pim:
description: Allow PIM traps
suboptions:
@@ -689,34 +1100,58 @@ options:
description: Enable/disable PIM traps
type: bool
type: dict
- vrfmib:
- description: Allow vrfmib traps
+ pki:
+ description: Enable SNMP pki traps
+ type: bool
+ port_security:
+ description: Enable SNMP port security traps
+ type: bool
+ power_ethernet:
+ description: Allow SNMP power ethernet traps
suboptions:
- vrf_up:
- description: Enable vrf-up trap
- type: bool
- vrf_down:
- description: Enable vrf-down trap
- type: bool
- vnet_trunk_up:
- description: Enable vnet-trunk-up trap
+ enable:
+ description: Enable SNMP power ethernet traps
type: bool
- vnet_trunk_down:
- description: Enable vnet-trunk-down traps
+ group:
+ description: Enable SNMP inline power group based traps.
+ suboptions:
+ slot_id:
+ description: An integer between 1 and 20 (physical slot number)
+ type: int
+ threshold:
+ description: Threshold level for this slot
+ type: int
+ elements: dict
+ type: list
+ police:
+ description: Enable Policing Trap
type: bool
type: dict
- pki:
- description: Enable SNMP pki traps
+ pw_vc:
+ description: Enable SNMP pw vc traps
+ type: bool
+ rep:
+ description: Enable SNMP Resilient Ethernet Protocol Traps
type: bool
rsvp:
description: Enable SNMP RSVP traps
type: bool
- isis:
- description: Enable SNMP isis traps
- type: bool
- pw_vc:
- description: Enable SNMP pw vc traps
+ rf:
+ description: Enable all SNMP traps defined in CISCO-RF-MIB
type: bool
+ smart_license:
+ description: Allow smart license traps
+ suboptions:
+ enable:
+ description: Enable smart license traps
+ type: bool
+ entitlement:
+ description: Enable Entitlement Notification trap
+ type: bool
+ global:
+ description: Enable Global Notification traps
+ type: bool
+ type: dict
snmp:
description: Enable SNMP traps
suboptions:
@@ -736,18 +1171,198 @@ options:
description: Enable warmStart trap
type: bool
type: dict
+ stackwise:
+ description: Enable SNMP stackwise traps
+ type: bool
+ stpx:
+ description: Allow SNMP STPX MIB traps
+ suboptions:
+ enable:
+ description: Enable SNMP STPX MIB traps
+ type: bool
+ inconsistency:
+ description: Enable SNMP STPX MIB InconsistencyUpdate traps
+ type: bool
+ loop_inconsistency:
+ description: Enable SNMP STPX MIB LoopInconsistencyUpdate traps
+ type: bool
+ root_inconsistency:
+ description: Enable SNMP STPX MIB RootInconsistencyUpdate traps
+ type: bool
+ type: dict
syslog:
description: Enable SNMP syslog traps
type: bool
transceiver_all:
description: Enable SNMP transceiver traps
type: bool
+ trustsec:
+ description: Allow SNMP CISCO-TRUSTSEC-MIB traps
+ suboptions:
+ authz_file_error:
+ description: Enable ctsAuthzCacheFileErrNotif notifications
+ type: bool
+ cache_file_error:
+ description: Enable ctsCacheFileAccessErrNotif notifications
+ type: bool
+ enable:
+ description: Enable SNMP CISCO-TRUSTSEC-MIB traps
+ type: bool
+ keystore_file_error:
+ description: Enable ctsSwKeystoreFileErrNotif notifications
+ type: bool
+ keystore_sync_fail:
+ description: Enable ctsSwKeystoreSyncFailNotif notifications
+ type: bool
+ random_number_fail:
+ description: Enable ctsSapRandonNumberFailNotif notifications
+ type: bool
+ src_entropy_fail:
+ description: Enable ctsSrcEntropyFailNotif notifications
+ type: bool
+ type: dict
+ trustsec_interface:
+ description: Allow SNMP CISCO-TRUSTSEC-INTERFACE-MIB traps
+ suboptions:
+ enable:
+ description: Enable SNMP CISCO-TRUSTSEC-INTERFACE-MIB traps
+ type: bool
+ authc_fail:
+ description: Enable ctsiIfAuthenticationFailNotif trap
+ type: bool
+ authz_fail:
+ description: Enable ctsiAuthorizationFailNotif trap
+ type: bool
+ sap_fail:
+ description: Enable ctsiIfSapNegotiationFailNotif trap
+ type: bool
+ supplicant_fail:
+ description: Enable ctsiIfAddSupplicantFailNotif trap
+ type: bool
+ unauthorized:
+ description: Enable ctsiIfUnauthorizedNotifEnable trap
+ type: bool
+ type: dict
+ trustsec_policy:
+ description: Allow SNMP CISCO-TRUSTSEC-POLICY-MIB traps
+ suboptions:
+ enable:
+ description: Enable SNMP CISCO-TRUSTSEC-POLICY-MIB traps
+ type: bool
+ authz_sgacl_fail:
+ description: Enable ctspAuthorizationSgaclFailNotif notifications
+ type: bool
+ peer_policy_updated:
+ description: Enable ctspPeerPolicyUpdatedNotif notifications
+ type: bool
+ type: dict
+ trustsec_server:
+ description: Allow SNMP CISCO-TRUSTSEC-SERVER-MIB traps
+ suboptions:
+ enable:
+ description: Enable SNMP CISCO-TRUSTSEC-SERVER-MIB traps
+ type: bool
+ provision_secret:
+ description: Enable ctsvNoProvisionSecretNotif notification
+ type: bool
+ radius_server:
+ description: Enable ctsvNoRadiusServerNotif notification
+ type: bool
+ type: dict
+ trustsec_sxp:
+ description: Allow SNMP CISCO-TRUSTSEC-SXP-MIB traps
+ suboptions:
+ enable:
+ description: Enable SNMP CISCO-TRUSTSEC-SXP-MIB traps
+ type: bool
+ binding_conflict:
+ description: Enable ctsxSxpBindingConflictNotif notifications
+ type: bool
+ binding_err:
+ description: Enable ctsxSxpBindingErrNotif notifications
+ type: bool
+ binding_expn_fail:
+ description: Enable ctsxSxpBindingExpnFailNotif notifications
+ type: bool
+ conn_config_err:
+ description: Enable ctsxSxpConnConfigErrNotif notifications
+ type: bool
+ conn_down:
+ description: Enable ctsxSxpConnDownNotif notifications
+ type: bool
+ conn_srcaddr_err:
+ description: Enable ctsxSxpConnSourceAddrErrNotif notifications
+ type: bool
+ conn_up:
+ description: Enable ctsxSxpConnUpNotif notifications
+ type: bool
+ msg_parse_err:
+ description: Enable ctsxSxpMsgParseErrNotif notifications
+ type: bool
+ oper_nodeid_change:
+ description: Enable ctsxSxpOperNodeIdChangeNotif notifications
+ type: bool
+ type: dict
tty:
description: Enable SNMP tty TCP connection traps
type: bool
+ udld:
+ description: Allow SNMP CISCO-UDLDP-MIB traps
+ suboptions:
+ enable:
+ description: Enable SNMP CISCO-UDLDP-MIB traps
+ type: bool
+ link_fail_rpt:
+ description: Enable SNMP cudldpFastHelloLinkFailRptNotification traps
+ type: bool
+ status_change:
+ description: Enable SNMP cudldpFastHelloStatusChangeNotification traps
+ type: bool
+ type: dict
+ vlan_membership:
+ description: Enable SNMP VLAN membership traps
+ type: bool
+ vlancreate:
+ description: Enable SNMP VLAN created traps
+ type: bool
+ vlandelete:
+ description: Enable SNMP VLAN deleted traps
+ type: bool
+ vrfmib:
+ description: Allow vrfmib traps
+ suboptions:
+ vrf_up:
+ description: Enable vrf-up trap
+ type: bool
+ vrf_down:
+ description: Enable vrf-down trap
+ type: bool
+ vnet_trunk_up:
+ description: Enable vnet-trunk-up trap
+ type: bool
+ vnet_trunk_down:
+ description: Enable vnet-trunk-down traps
+ type: bool
+ type: dict
vrrp:
description: Enable SNMP vrrp traps
type: bool
+ vswitch:
+ description: Allow SNMP Virtual Switch notifications
+ suboptions:
+ dual_active:
+ description: Enable SNMP Virtual Switch (Dual Active) notification
+ type: bool
+ enable:
+ description: Enable SNMP Virtual Switch notifications
+ type: bool
+ vsl:
+ description: Enable SNMP Virtual Switch Link (VSL) notification
+ type: bool
+ type: dict
+ vtp:
+ description: Enable SNMP VTP traps
+ type: bool
type: dict
users:
description: Define a user who can access the SNMP engine
@@ -1233,7 +1848,7 @@ EXAMPLES = """
# Before state:
# -------------
-#router-ios#show running-config | section ^snmp-server
+# router-ios#show running-config | section ^snmp-server
# snmp-server engineID remote 172.16.0.12 udp-port 25 AB0C5342FF0F
# snmp-server user userPaul dev v1 access 24
# snmp-server group mergedGroup v3 auth
@@ -1939,7 +2554,6 @@ EXAMPLES = """
# }
# ]
# }
-
"""
RETURN = """
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_static_routes.py b/ansible_collections/cisco/ios/plugins/modules/ios_static_routes.py
index ffa7290e4..b3c57ad6d 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_static_routes.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_static_routes.py
@@ -930,7 +930,6 @@ EXAMPLES = """
# tag: 50
# track: 150
# vrf: blue
-
"""
RETURN = """
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py b/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py
index 2877e4318..1dd3228ce 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py
@@ -95,6 +95,20 @@ options:
- "List of private VLANs associated with the primary . Only works with `type: primary`."
type: list
elements: int
+ member:
+ description:
+ - Members of VLAN
+ type: dict
+ suboptions:
+ vni:
+ description:
+ - VXLAN vni
+ type: int
+ required: true
+ evi:
+ description:
+ - Ethernet Virtual Private Network (EVPN)
+ type: int
running_config:
description:
- This option is used only with state I(parsed).
@@ -104,6 +118,10 @@ options:
transforms it into Ansible structured data as per the resource module's argspec
and the value is then returned in the I(parsed) key within the result.
type: str
+ configuration:
+ description:
+ When set to true, deals with vlan configuration CLIs
+ type: bool
state:
description:
- The state the configuration should be left in
@@ -206,6 +224,44 @@ EXAMPLES = """
# ------------------------------------------------------------------------------
# 10
+# Using merged (configuration: True)
+
+# Before state:
+# -------------
+#
+# Leaf-01#show run nve | sec ^vlan configuration
+# vlan configuration 101
+# member evpn-instance 101 vni 10101
+# vlan configuration 201
+# member evpn-instance 201 vni 10201
+
+
+- name: Merge provided configuration with device configuration
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 102
+ member:
+ vni: 10102
+ evi: 102
+ - vlan_id: 901
+ member:
+ vni: 50901
+ configuration: true
+ state: merged
+
+# After state:
+# ------------
+#
+# Leaf-01#show run nve | sec ^vlan configuration
+# vlan configuration 101
+# member evpn-instance 101 vni 10101
+# vlan configuration 102
+# member evpn-instance 102 vni 10102
+# vlan configuration 201
+# member evpn-instance 201 vni 10201
+# vlan configuration 901
+# member vni 50901
+
# Using overridden
# Before state:
@@ -268,6 +324,45 @@ EXAMPLES = """
# 1004 fdnet 101004 1500 - - - ieee - 0 0
# 1005 trnet 101005 1500 - - - ibm - 0 0
+
+# Using overridden (configuration: True)
+
+# Before state:
+# -------------
+#
+# Leaf-01#show run nve | sec ^vlan configuration
+# vlan configuration 101
+# member evpn-instance 101 vni 10101
+# vlan configuration 102
+# member evpn-instance 102 vni 10102
+# vlan configuration 201
+# member evpn-instance 201 vni 10201
+# vlan configuration 901
+# member vni 50901
+
+- name: Override device configuration of all VLANs with provided configuration
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 101
+ member:
+ vni: 10102
+ evi: 102
+ - vlan_id: 102
+ member:
+ vni: 10101
+ evi: 101
+ configuration: true
+ state: overridden
+
+# After state:
+# ------------
+#
+# Leaf-01#show run nve | sec ^vlan configuration
+# vlan configuration 101
+# member evpn-instance 102 vni 10102
+# vlan configuration 102
+# member evpn-instance 101 vni 10101
+
# Using replaced
# Before state:
@@ -428,8 +523,41 @@ EXAMPLES = """
# 1004 fdnet 101004 1500 - - - ieee - 0 0
# 1005 trnet 101005 1500 - - - ibm - 0 0
+# Using deleted (configuration: True)
+
+# Before state:
+# -------------
+#
+# Leaf-01#show run nve | sec ^vlan configuration
+# vlan configuration 101
+# member evpn-instance 101 vni 10101
+# vlan configuration 102
+# member evpn-instance 102 vni 10102
+# vlan configuration 201
+# member evpn-instance 201 vni 10201
+# vlan configuration 901
+# member vni 50901
+
+- name: Delete attributes of given VLANs
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 101
+ configuration: true
+ state: deleted
+
+# After state:
+# -------------
+#
+# Leaf-01#show run nve | sec ^vlan configuration
+# vlan configuration 102
+# member evpn-instance 102 vni 10102
+# vlan configuration 201
+# member evpn-instance 201 vni 10201
+# vlan configuration 901
+# member vni 50901
+
# Using Deleted without any config passed
-#"(NOTE: This will delete all of configured vlans attributes)"
+# "(NOTE: This will delete all of configured vlans attributes)"
# Before state:
# -------------
@@ -485,134 +613,108 @@ EXAMPLES = """
# 1004 fdnet 101004 1500 - - - ieee - 0 0
# 1005 trnet 101005 1500 - - - ibm - 0 0
-# Using Gathered
+# Using Deleted without any config passed (configuration: True)
+# "(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
+# Leaf-01#show run nve | sec ^vlan configuration
+# vlan configuration 101
+# member evpn-instance 101 vni 10101
+# vlan configuration 102
+# member evpn-instance 102 vni 10102
+# vlan configuration 201
+# member evpn-instance 201 vni 10201
+# vlan configuration 202
+# member evpn-instance 202 vni 10202
+# vlan configuration 901
+# member vni 50901
+
+- name: Delete attributes of ALL VLANs
+ cisco.ios.ios_vlans:
+ configuration: true
+ state: deleted
+
+# After state:
+# -------------
#
-# 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
+# Leaf-01#show run nve | sec ^vlan configuration
+# no vlan configuration 101
+# no vlan configuration 102
+# no vlan configuration 201
+# no vlan configuration 202
+# no vlan configuration 901
+# no vlan configuration 902
+
+# Using Gathered (configuration: True)
+
+# Before state:
+# -------------
#
-# Remote SPAN VLANs
-# ------------------------------------------------------------------------------
-# 10
+# Leaf-01#show run nve | sec ^vlan configuration
+# vlan configuration 101
+# member evpn-instance 101 vni 10101
+# vlan configuration 102
+# member evpn-instance 102 vni 10102
+# vlan configuration 201
+# member evpn-instance 201 vni 10201
+# vlan configuration 202
+# member evpn-instance 202 vni 10202
+# vlan configuration 901
+# member vni 50901
- name: Gather listed vlans with provided configurations
cisco.ios.ios_vlans:
config:
+ configuration: true
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
+# gathered = [
+# {
+# "member": {
+# "evi": 101,
+# "vni": 10101
# },
-# {
-# "mtu": 1500,
-# "name": "VLAN0020",
-# "shutdown": "disabled",
-# "state": "active",
-# "vlan_id": 20
+# "vlan_id": 101
+# },
+# {
+# "member": {
+# "evi": 102,
+# "vni": 10102
# },
-# {
-# "mtu": 1500,
-# "name": "VLAN0030",
-# "shutdown": "disabled",
-# "state": "active",
-# "vlan_id": 30
+# "vlan_id": 102
+# },
+# {
+# "member": {
+# "evi": 201,
+# "vni": 10201
# },
-# {
-# "mtu": 1500,
-# "name": "fddi-default",
-# "shutdown": "enabled",
-# "state": "active",
-# "vlan_id": 1002
+# "vlan_id": 201
+# },
+# {
+# "member": {
+# "evi": 202,
+# "vni": 10202
# },
-# {
-# "mtu": 1500,
-# "name": "token-ring-default",
-# "shutdown": "enabled",
-# "state": "active",
-# "vlan_id": 1003
+# "vlan_id": 202
+# },
+# {
+# "member": {
+# "vni": 50901
# },
-# {
-# "mtu": 1500,
-# "name": "fddinet-default",
-# "shutdown": "enabled",
-# "state": "active",
-# "vlan_id": 1004
+# "vlan_id": 901
+# },
+# {
+# "member": {
+# "vni": 50902
# },
-# {
-# "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
+# "vlan_id": 902
+# }
+# ]
# Using Rendered
@@ -655,6 +757,31 @@ EXAMPLES = """
# "shutdown"
# ]
+# Using Rendered (configuration: True)
+
+- name: Render the commands for provided configuration
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 101
+ member:
+ vni: 10101
+ evi: 101
+ - vlan_id: 102
+ member:
+ vni: 10102
+ evi: 102
+ state: rendered
+
+# Module Execution Result:
+# ------------------------
+#
+# "rendered": [
+# "vlan configuration 101",
+# "member evpn-instance 101 vni 10101",
+# "vlan configuration 102",
+# "member evpn-instance 102 vni 10102"
+# ]
+
# Using Parsed
# File: parsed.cfg
@@ -748,6 +875,50 @@ EXAMPLES = """
# "vlan_id": 1005
# }
# ]
+
+# Using Parsed (configuration: True)
+
+# File: parsed.cfg
+# ----------------
+#
+# vlan configuration 101
+# member evpn-instance 101 vni 10101
+# vlan configuration 102
+# member evpn-instance 102 vni 10102
+# vlan configuration 901
+# member vni 50901
+
+- name: Parse the commands for provided configuration
+ cisco.ios.ios_vlans:
+ running_config: "{{ lookup('file', './parsed.cfg') }}"
+ configuration: true
+ state: parsed
+
+# Module Execution Result:
+# ------------------------
+#
+# "parsed": [
+# {
+# "member": {
+# "evi": 101,
+# "vni": 10101
+# },
+# "vlan_id": 101
+# },
+# {
+# "member": {
+# "evi": 102,
+# "vni": 10102
+# },
+# "vlan_id": 102
+# },
+# {
+# "member": {
+# "vni": 50901
+# },
+# "vlan_id": 901
+# }
+# ]
"""
RETURN = """
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_vrf.py b/ansible_collections/cisco/ios/plugins/modules/ios_vrf.py
index 4165bcae5..27c6641eb 100644
--- a/ansible_collections/cisco/ios/plugins/modules/ios_vrf.py
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_vrf.py
@@ -54,6 +54,11 @@ options:
VRF definition value accepts alphanumeric characters used to provide additional
information about the VRF.
type: str
+ address_family:
+ description:
+ - The list of address families with MDT parameters to be configured on the remote IOS device.
+ type: list
+ elements: dict
rd:
description:
- The router-distinguisher value uniquely identifies the VRF to routing processes
@@ -256,7 +261,6 @@ EXAMPLES = """
route_both_ipv6:
- 1:100
- 3:100
-
"""
RETURN = """
@@ -327,6 +331,39 @@ def add_command_to_vrf(name, cmd, commands):
commands.append(cmd)
+KEY_TO_COMMAND_MAP = {
+ "auto_discovery": "mdt auto-discovery ",
+ "default": "mdt default vxlan ",
+ "data_mcast": "mdt data vxlan ",
+ "data_threshold": "mdt data threshold ",
+ "overlay": "mdt overlay ",
+}
+
+
+def add_mdt_commands(afi_dict, vrf_name, commands):
+ for key, value in afi_dict["mdt"].items():
+ cmd = KEY_TO_COMMAND_MAP[key]
+
+ if key in ["default", "data_mcast"]:
+ cmd = cmd + value["vxlan_mcast_group"]
+ add_command_to_vrf(vrf_name, cmd, commands)
+ elif key == "data_threshold":
+ cmd = cmd + str(value)
+ add_command_to_vrf(vrf_name, cmd, commands)
+ elif key == "auto_discovery":
+ if value["vxlan"]["enable"]:
+ cmd = cmd + "vxlan"
+ if value["vxlan"].get("inter_as"):
+ cmd = cmd + " " + "inter-as"
+ add_command_to_vrf(vrf_name, cmd, commands)
+ elif key == "overlay":
+ if value["use_bgp"]["enable"]:
+ cmd = cmd + "use-bgp"
+ if value["use_bgp"].get("spt_only"):
+ cmd = cmd + " " + "spt-only"
+ add_command_to_vrf(vrf_name, cmd, commands)
+
+
def map_obj_to_commands(updates, module):
commands = list()
for update in updates:
@@ -416,6 +453,33 @@ def map_obj_to_commands(updates, module):
add_command_to_vrf(want["name"], cmd, commands)
cmd = "exit-address-family"
add_command_to_vrf(want["name"], cmd, commands)
+ if needs_update(want, have, "address_family"):
+ for want_mdt in want["address_family"]:
+ afi = want_mdt["afi"]
+ af_dict = {}
+ data_dict = want_mdt["mdt"].pop("data", {})
+ if data_dict:
+ if "vxlan_mcast_group" in data_dict:
+ want_mdt["mdt"]["data_mcast"] = {
+ "vxlan_mcast_group": data_dict["vxlan_mcast_group"],
+ }
+ if "threshold" in data_dict:
+ want_mdt["mdt"]["data_threshold"] = data_dict["threshold"]
+
+ for key_in, value_in in want_mdt["mdt"].items():
+ have_mdt = next(
+ (i for i in have.get("address_family", {}) if i["afi"] == afi),
+ {},
+ )
+
+ if needs_update(want_mdt["mdt"], have_mdt.get("mdt", {}), key_in):
+ af_dict.update({key_in: value_in})
+ if af_dict:
+ cmd = "address-family" + " " + str(afi)
+ add_command_to_vrf(want["name"], cmd, commands)
+ add_mdt_commands({"mdt": af_dict}, want["name"], commands)
+ add_command_to_vrf(want["name"], "exit-address-family", commands)
+
if want["interfaces"] is not None:
for intf in set(have.get("interfaces", [])).difference(want["interfaces"]):
commands.extend(["interface %s" % intf, "no vrf forwarding %s" % want["name"]])
@@ -545,6 +609,81 @@ def parse_export_ipv6(configobj, name):
pass
+def parse_mdt(configobj, name):
+ cfg = configobj["vrf definition %s" % name]
+ mdt_list = []
+
+ for ip in ["ipv4", "ipv6"]:
+ ret_dict = {}
+ try:
+ subcfg = cfg["address-family " + ip]
+ subcfg = "\n".join(subcfg.children)
+ except KeyError:
+ subcfg = ""
+ pass
+
+ re1 = re.compile(r"^mdt +auto\-discovery +(?P<option>\S+)(\s+(?P<inter_as>inter\-as))?$")
+ re2 = re.compile(r"^mdt +default +vxlan +(?P<mcast_group>\S+)$")
+ re3 = re.compile(r"^mdt +data +vxlan +(?P<mcast_group>.+)$")
+ re4 = re.compile(r"^mdt +data +threshold +(?P<threshold_value>\d+)$")
+ re5 = re.compile(r"^mdt +overlay +(?P<use_bgp>use-bgp)(\s+(?P<spt_only>spt-only))?$")
+
+ for line in subcfg.splitlines():
+ line = line.strip()
+ m = re1.match(line)
+ if m:
+ group = m.groupdict()
+ ret_dict.setdefault("auto_discovery", {}).setdefault(
+ group["option"],
+ {},
+ ).setdefault("enable", True)
+ if group["inter_as"]:
+ ret_dict.setdefault("auto_discovery", {}).setdefault(
+ group["option"],
+ {},
+ ).setdefault("inter_as", True)
+ continue
+
+ m = re2.match(line)
+ if m:
+ group = m.groupdict()
+ ret_dict.setdefault("default", {}).setdefault(
+ "vxlan_mcast_group",
+ group["mcast_group"],
+ )
+ continue
+
+ m = re3.match(line)
+ if m:
+ group = m.groupdict()
+ ret_dict.setdefault("data_mcast", {}).setdefault(
+ "vxlan_mcast_group",
+ group["mcast_group"],
+ )
+ continue
+
+ m = re4.match(line)
+ if m:
+ group = m.groupdict()
+ ret_dict.setdefault("data_threshold", int(group["threshold_value"]))
+
+ m = re5.match(line)
+ if m:
+ group = m.groupdict()
+ ret_dict.setdefault("overlay", {}).setdefault(
+ "use_bgp",
+ {},
+ ).setdefault("enable", True)
+ if group["spt_only"]:
+ ret_dict.setdefault("overlay", {}).setdefault(
+ "use_bgp",
+ {},
+ ).setdefault("spt_only", True)
+
+ mdt_list.append({"afi": ip, "mdt": ret_dict})
+ return mdt_list
+
+
def map_config_to_obj(module):
config = get_config(module)
configobj = NetworkConfig(indent=1, contents=config)
@@ -569,6 +708,7 @@ def map_config_to_obj(module):
"route_import_ipv6": parse_import_ipv6(configobj, item),
"route_export_ipv6": parse_export_ipv6(configobj, item),
"route_both_ipv6": parse_both(configobj, item, address_family="ipv6"),
+ "address_family": parse_mdt(configobj, item),
}
instances.append(obj)
return instances
@@ -624,6 +764,7 @@ def map_params_to_obj(module):
item["route_import_ipv6"] = get_value("route_import_ipv6")
item["route_export_ipv6"] = get_value("route_export_ipv6")
item["route_both_ipv6"] = get_value("route_both_ipv6")
+ item["address_family"] = get_value("address_family")
both_addresses_family = ["", "_ipv6", "_ipv4"]
for address_family in both_addresses_family:
if item["route_both%s" % address_family]:
@@ -651,16 +792,18 @@ def update_objects(want, have):
else:
for key, value in iteritems(entry):
if value:
- try:
- if isinstance(value, list):
+ if isinstance(value, list):
+ try:
if sorted(value) != sorted(item[key]):
if (entry, item) not in updates:
updates.append((entry, item))
- elif value != item[key]:
- if (entry, item) not in updates:
+ except TypeError:
+ if value != item[key]:
updates.append((entry, item))
- except TypeError:
- pass
+ pass
+ elif value != item[key]:
+ if (entry, item) not in updates:
+ updates.append((entry, item))
return updates
@@ -693,6 +836,7 @@ def main():
vrfs=dict(type="list", elements="raw"),
name=dict(),
description=dict(),
+ address_family=dict(type="list", elements="dict"),
rd=dict(),
route_export=dict(type="list", elements="str"),
route_import=dict(type="list", elements="str"),
@@ -720,6 +864,7 @@ def main():
result["warnings"] = warnings
want = map_params_to_obj(module)
have = map_config_to_obj(module)
+
commands = map_obj_to_commands(update_objects(want, have), module)
if module.params["purge"]:
want_vrfs = [x["name"] for x in want]
diff --git a/ansible_collections/cisco/ios/plugins/modules/ios_vxlan_vtep.py b/ansible_collections/cisco/ios/plugins/modules/ios_vxlan_vtep.py
new file mode 100644
index 000000000..b2c5933e7
--- /dev/null
+++ b/ansible_collections/cisco/ios/plugins/modules/ios_vxlan_vtep.py
@@ -0,0 +1,404 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Copyright 2023 Red Hat
+# GNU General Public License v3.0+
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+"""
+The module file for ios_vxlan_vtep
+"""
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+DOCUMENTATION = """
+module: ios_vxlan_vtep
+short_description: Resource module to configure VXLAN VTEP interface.
+description: This module provides declarative management of VXLAN VTEP interface on Cisco IOS network
+ devices.
+version_added: 5.3.0
+author: Padmini Priyadarshini Sivaraj (@PadminiSivaraj)
+notes:
+ - Tested against Cisco IOS device with Version 17.13.01 on Cat9k on CML.
+ - This module works with connection C(network_cli).
+ See U(https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html)
+options:
+ config:
+ description: A dictionary of VXLAN VTEP interface option
+ type: list
+ elements: dict
+ suboptions:
+ interface:
+ description:
+ - VXLAN VTEP interface
+ type: str
+ required: true
+ source_interface:
+ description:
+ - Source interface for the VXLAN VTEP interface
+ type: str
+ host_reachability_bgp:
+ description:
+ - Host reachability using EVPN protocol
+ type: bool
+ member:
+ description:
+ - Configure VNI member
+ type: dict
+ suboptions:
+ vni:
+ description:
+ - Configure VNI information
+ type: dict
+ suboptions:
+ l2vni:
+ description:
+ - Associates L2VNI with the VXLAN VTEP interface
+ type: list
+ elements: dict
+ suboptions:
+ vni:
+ description: VNI number
+ type: int
+ replication:
+ description: Replication type for the L2VNI
+ type: dict
+ suboptions:
+ type:
+ description: Replication type
+ type: str
+ choices: ['ingress', 'static']
+ mcast_group:
+ description: Configure multicast group for VNI(s)
+ type: dict
+ suboptions:
+ ipv4:
+ description: IPv4 multicast group
+ type: str
+ ipv6:
+ description: IPv6 multicast group
+ type: str
+ l3vni:
+ description:
+ - Associates L3VNI with the VXLAN VTEP interface
+ type: list
+ elements: dict
+ suboptions:
+ vni:
+ description: VNI number
+ type: int
+ vrf:
+ description: VRF name of the L3VNI
+ type: str
+ running_config:
+ description:
+ - This option is used only with state I(parsed).
+ - The value of this option should be the output received from the IOS device by
+ executing the command B(show running-config | section ^interface nve).
+ - The state I(parsed) reads the configuration from C(running_config) option and
+ transforms it into Ansible structured data as per the resource module's argspec
+ and the value is then returned in the I(parsed) key within the result.
+ type: str
+
+ state:
+ description:
+ - The state the configuration should be left in
+ type: str
+ choices:
+ - merged
+ - replaced
+ - overridden
+ - deleted
+ - rendered
+ - gathered
+ - parsed
+ default: merged
+"""
+
+EXAMPLES = """
+
+# Using state merged
+
+# Before state:
+# -------------
+# interface nve1
+# no ip address
+# source-interface Loopback1
+# host-reachability protocol bgp
+# member vni 10101 mcast-group 225.0.0.101
+# member vni 10102 ingress-replication
+# member vni 50901 vrf green
+# member vni 10201 mcast-group 225.0.0.101
+# member vni 10202 ingress-replication
+# member vni 50902 vrf blue
+
+# - name: Merge the provided configuration with the device configuration
+# cisco.ios.ios_vxlan_vtep:
+# config:
+# - interface: nve1
+# source_interface: loopback2
+# member:
+# vni:
+# l2vni:
+# - vni: 10101
+# replication:
+# type: ingress
+# - vni: 10201
+# replication:
+# type: static
+# mcast_group:
+# ipv4: 225.0.0.101
+# ipv6: FF0E:225::101
+# l3vni:
+# - vni: 50901
+# vrf: blue
+# state: merged
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "interface nve1",
+# "source-interface loopback2",
+# "no member vni 10101 mcast-group 225.0.0.101",
+# "member vni 10101 ingress-replication",
+# "no member vni 10201 mcast-group 225.0.0.101",
+# "member vni 10201 mcast-group 225.0.0.101 FF0E:225::101",
+# "no member vni 50901 vrf green",
+# "no member vni 50902 vrf blue",
+# "member vni 50901 vrf blue"
+# ],
+
+# After state:
+# ------------
+# interface nve1
+# no ip address
+# source-interface Loopback2
+# host-reachability protocol bgp
+# member vni 10102 ingress-replication
+# member vni 10202 ingress-replication
+# member vni 10101 ingress-replication
+# member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+# member vni 50901 vrf blue
+
+# Using state replaced
+
+# Before state:
+# -------------
+# interface nve1
+# no ip address
+# source-interface Loopback2
+# host-reachability protocol bgp
+# member vni 10102 ingress-replication
+# member vni 10202 ingress-replication
+# member vni 10101 ingress-replication
+# member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+# member vni 50901 vrf blue
+
+# - name: Replaces the device configuration with the provided configuration
+# cisco.ios.ios_vxlan_vtep:
+# config:
+# - interface: nve1
+# source_interface: Loopback2
+# member:
+# vni:
+# l2vni:
+# - vni: 10101
+# replication:
+# type: static
+# mcast_group:
+# ipv6: FF0E:225::101
+# - vni: 10201
+# replication:
+# type: static
+# mcast_group:
+# ipv6: FF0E:225::102
+# state: replaced
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "interface nve1",
+# "no member vni 10101 ingress-replication",
+# "member vni 10101 mcast-group FF0E:225::101",
+# "no member vni 10201 mcast-group 225.0.0.101 FF0E:225::101",
+# "member vni 10201 mcast-group FF0E:225::102",
+# "no member vni 10102 ingress-replication",
+# "no member vni 10202 ingress-replication",
+# "no member vni 50901 vrf blue"
+# ],
+
+# After state:
+# ------------
+# interface nve1
+# no ip address
+# source-interface Loopback2
+# host-reachability protocol bgp
+# member vni 10101 mcast-group FF0E:225::101
+# member vni 10201 mcast-group FF0E:225::102
+
+# Using state Deleted
+
+# Before state:
+# -------------
+# interface nve1
+# no ip address
+# source-interface Loopback2
+# host-reachability protocol bgp
+# member vni 10101 mcast-group FF0E:225::101
+# member vni 10201 mcast-group FF0E:225::102
+
+# - name: "Delete VXLAN VTEP interface"
+# cisco.ios.ios_vxlan_vtep:
+# config:
+# - interface: nve1
+# state: deleted
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "interface nve1",
+# "no source-interface Loopback2",
+# "no host-reachability protocol bgp",
+# "no member vni 10101 mcast-group FF0E:225::101",
+# "no member vni 10201 mcast-group FF0E:225::102"
+# ],
+
+# After state:
+# -------------
+# interface nve1
+# no ip address
+
+# Using state Deleted with member VNIs
+
+# Before state:
+# -------------
+# interface nve1
+# no ip address
+# source-interface Loopback2
+# host-reachability protocol bgp
+# member vni 10101 mcast-group FF0E:225::101
+# member vni 10102 mcast-group 225.0.0.101
+# member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+
+# - name: "Delete VXLAN VTEP interface with member VNIs"
+# cisco.ios.ios_vxlan_vtep:
+# config:
+# - interface: nve1
+# source_interface: Loopback2
+# member:
+# vni:
+# l2vni:
+# - vni: 10101
+# - vni: 10102
+# state: deleted
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "interface nve1",
+# "no member vni 10101 mcast-group FF0E:225::101",
+# "no member vni 10102 mcast-group 225.0.0.101"
+# ],
+
+# After state:
+# -------------
+# interface nve1
+# no ip address
+# source-interface Loopback2
+# host-reachability protocol bgp
+# member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+
+# Using state Deleted with no config
+
+# Before state:
+# -------------
+# interface nve1
+# no ip address
+# source-interface Loopback2
+# host-reachability protocol bgp
+# member vni 10101 mcast-group FF0E:225::101
+# member vni 10201 mcast-group FF0E:225::102
+
+# - name: "Delete VXLAN VTEP interface with no config"
+# cisco.ios.ios_vxlan_vtep:
+# state: deleted
+
+# Commands Fired:
+# ---------------
+# "commands": [
+# "interface nve1",
+# "no source-interface Loopback2",
+# "no host-reachability protocol bgp",
+# "no member vni 10101 mcast-group FF0E:225::101",
+# "no member vni 10201 mcast-group FF0E:225::102"
+# ],
+
+# After state:
+# -------------
+# interface nve1
+# no ip address
+"""
+
+RETURN = """
+before:
+ description: The configuration prior to the module execution.
+ returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged)
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+after:
+ description: The resulting configuration after module execution.
+ returned: when changed
+ type: dict
+ sample: >
+ This output will always be in the same format as the
+ module argspec.
+commands:
+ description: The set of commands pushed to the remote device.
+ returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged)
+ type: list
+ sample:
+ - 'interface nve1'
+ - 'source-interface Loopback1'
+ - 'host-reachability protocol bgp'
+ - 'member vni 10101 ingress-replication'
+"""
+
+from ansible.module_utils.basic import AnsibleModule
+
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.vxlan_vtep.vxlan_vtep import (
+ Vxlan_vtepArgs,
+)
+from ansible_collections.cisco.ios.plugins.module_utils.network.ios.config.vxlan_vtep.vxlan_vtep import (
+ Vxlan_vtep,
+)
+
+
+def main():
+ """
+ Main entry point for module execution
+
+ :returns: the result form module invocation
+ """
+ module = AnsibleModule(
+ argument_spec=Vxlan_vtepArgs.argument_spec,
+ mutually_exclusive=[["config", "running_config"]],
+ required_if=[
+ ["state", "merged", ["config"]],
+ ["state", "replaced", ["config"]],
+ ["state", "overridden", ["config"]],
+ ["state", "rendered", ["config"]],
+ ["state", "parsed", ["running_config"]],
+ ],
+ supports_check_mode=True,
+ )
+
+ result = Vxlan_vtep(module).execute_module()
+ module.exit_json(**result)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ansible_collections/cisco/ios/plugins/terminal/ios.py b/ansible_collections/cisco/ios/plugins/terminal/ios.py
index 7ba3491ef..3be46ebfa 100644
--- a/ansible_collections/cisco/ios/plugins/terminal/ios.py
+++ b/ansible_collections/cisco/ios/plugins/terminal/ios.py
@@ -50,12 +50,14 @@ class TerminalModule(TerminalBase):
re.compile(rb"'[^']' +returned error code: ?\d+"),
re.compile(rb"Bad mask", re.I),
re.compile(rb"% ?(\S+) ?overlaps with ?(\S+)", re.I),
- re.compile(rb"[%\S] ?Error: ?[\s]+", re.I),
- re.compile(rb"[%\S] ?Informational: ?[\s]+", re.I),
+ re.compile(rb"% ?(\S+) ?Error: ?[\s]+", re.I),
+ re.compile(rb"% ?(\S+) ?Informational: ?[\s]+", re.I),
re.compile(rb"Command authorization failed"),
re.compile(rb"Command Rejected: ?[\s]+", re.I),
re.compile(rb"% General session commands not allowed under the address family", re.I),
re.compile(rb"% BGP: Error initializing topology", re.I),
+ re.compile(rb"%SNMP agent not enabled", re.I),
+ re.compile(rb"% Invalid", re.I),
]
terminal_config_prompt = re.compile(r"^.+\(config(-.*)?\)#$")
diff --git a/ansible_collections/cisco/ios/requirements.txt b/ansible_collections/cisco/ios/requirements.txt
index 8c44c98fa..8608c1b02 100644
--- a/ansible_collections/cisco/ios/requirements.txt
+++ b/ansible_collections/cisco/ios/requirements.txt
@@ -1,2 +1 @@
-ansible-pylibssh
-paramiko==2.8.1
+paramiko
diff --git a/ansible_collections/cisco/ios/test-requirements.txt b/ansible_collections/cisco/ios/test-requirements.txt
index b513f4ee2..94ff7c9e3 100644
--- a/ansible_collections/cisco/ios/test-requirements.txt
+++ b/ansible_collections/cisco/ios/test-requirements.txt
@@ -1,8 +1,9 @@
-black==22.3.0 ; python_version > '3.5'
+# For ansible-tox-linters
+black==23.3.0 ; python_version >= '3.7'
flake8
-mock ; python_version < '3.5'
-pexpect
-pytest-xdist
yamllint
-pytest-forked
-git+https://github.com/ansible-community/pytest-ansible-units.git
+
+# Unit test runner
+pytest-ansible ; python_version >= '3.9'
+git+https://github.com/ansible-community/pytest-ansible-units.git ; python_version < '3.9'
+pytest-xdist
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/_parsed.cfg b/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/_parsed.cfg
index 166af7ee7..b76fdcae3 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/_parsed.cfg
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/_parsed.cfg
@@ -1,10 +1,53 @@
-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
-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_acl
- 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
-access-list 110 remark test a remark.
+ip access-list extended NET-MGMT-VTY
+ 10 permit tcp 10.57.66.243 0.0.0.7 any eq 22
+ 20 permit tcp host 10.160.114.111 any eq 22
+ 30 permit tcp host 10.160.115.22 any eq 22
+ 40 deny ip any any log
+ip access-list extended TEST
+ 10 remark FIRST REMARK BEFORE LINE 10
+ 10 remark ============
+ 10 remark ALLOW HOST FROM BUILDING 10
+ 10 permit ip host 1.1.1.1 any
+ 20 remark FIRST REMARK BEFORE LINE 20
+ 20 remark ============
+ 20 remark ALLOW HOST FROM BUILDING 20
+ 20 permit ip host 2.2.2.2 any
+ 30 remark FIRST REMARK BEFORE LINE 30
+ 30 remark ============
+ 30 remark ALLOW NEW HOST FROM BUILDING 10
+ 30 permit ip host 3.3.3.3 any
+ remark FIRST REMARK AT END OF ACL
+ remark SECOND REMARK AT END OF ACL
+ip access-list extended empty_ip_ex_acl
+ remark empty remark 1
+ remark empty remark 2
+ remark empty remark never ends
+ip access-list extended mytest
+ 100 remark I am a test ace
+ 100 remark I am right after the test ace
+ 100 remark I third the test ace
+ 100 permit ip host 100.100.100.100 any
+ 110 remark I am the next test ace
+ 110 remark I am the next ace to the next ace
+ 110 permit ip host 10.40.150.0 any
+ remark I am the peace ace
+ remark Peace out
+ip access-list standard 42
+ 10 permit 10.182.250.0 0.0.0.255
+ip access-list extended 199
+ 10 permit ip 10.40.150.0 0.0.0.255 any
+ 20 permit ip any 10.40.150.0 0.0.0.255
+ipv6 access-list R1_TRAFFIC
+ sequence 10 permit ipv6 2001:ABAD:BEEF:1221::/64 any
+ sequence 20 deny tcp host 2001:ABAD:BEEF:2345::1 host 2001:ABAD:BEEF:1212::1 eq www
+ipv6 access-list empty_ipv6_acl
+ sequence 10 remark empty remark 1
+ sequence 20 remark empty remark 2
+ sequence 30 remark empty remark never ends
+ipv6 access-list ipv6_acl
+ sequence 10 remark I am a ipv6 ace
+ sequence 20 remark I am test
+ sequence 30 permit tcp any any
+ sequence 40 permit udp any any
+ sequence 50 remark I am new set of ipv6 ace
+ sequence 60 permit icmp any any
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/vars/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/vars/main.yaml
index 799b166a3..2d324ebe1 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/vars/main.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/vars/main.yaml
@@ -154,100 +154,207 @@ parsed:
- acls:
- aces:
- destination:
- address: 192.0.3.0
- wildcard_bits: 0.0.0.255
- dscp: ef
- grant: deny
- protocol: icmp
- protocol_options:
- icmp:
- echo: true
+ any: true
+ grant: permit
+ protocol: ip
sequence: 10
source:
- address: 192.0.2.0
+ address: 10.40.150.0
wildcard_bits: 0.0.0.255
- ttl:
- eq: 10
- - remarks:
- - "test a remark."
+ - destination:
+ address: 10.40.150.0
+ wildcard_bits: 0.0.0.255
+ grant: permit
+ protocol: ip
+ sequence: 20
+ source:
+ any: true
acl_type: extended
- name: "110"
+ name: "199"
+ - aces:
+ - grant: permit
+ sequence: 10
+ source:
+ address: 10.182.250.0
+ wildcard_bits: 0.0.0.255
+ acl_type: standard
+ name: "42"
- aces:
- destination:
- address: 198.51.101.0
+ any: true
port_protocol:
- eq: telnet
- wildcard_bits: 0.0.0.255
- grant: deny
+ eq: "22"
+ grant: permit
protocol: tcp
- protocol_options:
- tcp:
- ack: true
sequence: 10
source:
- address: 198.51.100.0
- wildcard_bits: 0.0.0.255
- tos:
- service_value: 12
+ address: 10.57.66.243
+ wildcard_bits: 0.0.0.7
- destination:
- address: 192.0.4.0
+ any: true
port_protocol:
- eq: www
- wildcard_bits: 0.0.0.255
- dscp: ef
- grant: deny
+ eq: "22"
+ grant: permit
protocol: tcp
- 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:
+ host: 10.160.114.111
- destination:
- address: 192.0.3.0
+ any: true
port_protocol:
- eq: www
- wildcard_bits: 0.0.0.255
- grant: deny
- option:
- traceroute: true
+ eq: "22"
+ grant: permit
protocol: tcp
- protocol_options:
- tcp:
- fin: true
+ sequence: 30
+ source:
+ host: 10.160.115.22
+ - destination:
+ any: true
+ grant: deny
+ log:
+ set: true
+ protocol: ip
+ sequence: 40
+ source:
+ any: true
+ acl_type: extended
+ name: NET-MGMT-VTY
+ - aces:
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 10
+ - "============"
+ - ALLOW HOST FROM BUILDING 10
sequence: 10
source:
- address: 192.0.2.0
- wildcard_bits: 0.0.0.255
- ttl:
- eq: 10
+ host: 1.1.1.1
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 20
+ - "============"
+ - ALLOW HOST FROM BUILDING 20
+ sequence: 20
+ source:
+ host: 2.2.2.2
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - FIRST REMARK BEFORE LINE 30
+ - "============"
+ - ALLOW NEW HOST FROM BUILDING 10
+ sequence: 30
+ source:
+ host: 3.3.3.3
+ - remarks:
+ - FIRST REMARK AT END OF ACL
+ - SECOND REMARK AT END OF ACL
acl_type: extended
- name: test_acl
+ name: TEST
+ - aces:
+ - remarks:
+ - empty remark 1
+ - empty remark 2
+ - empty remark never ends
+ acl_type: extended
+ name: empty_ip_ex_acl
+ - aces:
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - I am a test ace
+ - I am right after the test ace
+ - I third the test ace
+ sequence: 100
+ source:
+ host: 100.100.100.100
+ - destination:
+ any: true
+ grant: permit
+ protocol: ip
+ remarks:
+ - I am the next test ace
+ - I am the next ace to the next ace
+ sequence: 110
+ source:
+ host: 10.40.150.0
+ - remarks:
+ - I am the peace ace
+ - Peace out
+ acl_type: extended
+ name: mytest
afi: ipv4
- acls:
- aces:
- destination:
any: true
+ grant: permit
+ protocol: ipv6
+ sequence: 10
+ source:
+ address: 2001:ABAD:BEEF:1221::/64
+ - destination:
+ host: 2001:ABAD:BEEF:1212::1
port_protocol:
- eq: telnet
- dscp: af11
+ eq: www
grant: deny
protocol: tcp
- protocol_options:
- tcp:
- ack: true
+ sequence: 20
+ source:
+ host: 2001:ABAD:BEEF:2345::1
+ name: R1_TRAFFIC
+ - aces:
+ - remarks:
+ - empty remark 1
sequence: 10
+ - remarks:
+ - empty remark 2
+ sequence: 20
+ - remarks:
+ - empty remark never ends
+ sequence: 30
+ name: empty_ipv6_acl
+ - aces:
+ - remarks:
+ - I am a ipv6 ace
+ sequence: 10
+ - remarks:
+ - I am test
+ sequence: 20
+ - destination:
+ any: true
+ grant: permit
+ protocol: tcp
+ sequence: 30
source:
any: true
- port_protocol:
- eq: www
- name: R1_TRAFFIC
+ - destination:
+ any: true
+ grant: permit
+ protocol: udp
+ sequence: 40
+ source:
+ any: true
+ - remarks:
+ - I am new set of ipv6 ace
+ sequence: 50
+ - destination:
+ any: true
+ grant: permit
+ protocol: icmp
+ sequence: 60
+ source:
+ any: true
+ name: ipv6_acl
afi: ipv6
rendered:
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/_populate_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/_populate_config.yaml
index 4ac501796..843fc15bc 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/_populate_config.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/_populate_config.yaml
@@ -1,6 +1,13 @@
---
- ansible.builtin.include_tasks: _initial_vrf_setup.yaml
- ansible.builtin.include_tasks: _ospf_proc_setup.yaml
+
+- name: Enable routing
+ cisco.ios.ios_config:
+ lines:
+ - ip routing
+ - ipv6 unicast-routing
+
- name: Populate BGP address family configuration
cisco.ios.ios_bgp_address_family:
config:
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/merged.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/merged.yaml
index c09e95661..81aa0512d 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/merged.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/tests/cli/merged.yaml
@@ -11,6 +11,22 @@
cisco.ios.ios_bgp_address_family: &id001
config:
address_family:
+ - afi: l2vpn
+ safi: evpn
+ neighbor:
+ - address: 198.51.100.1
+ activate: true
+ inherit: LEAF-EVPN-PEER-POLICY
+ - afi: ipv4
+ vrf: green
+ redistribute:
+ - static:
+ set: true
+ - connected:
+ set: true
+ advertise:
+ afi: l2vpn
+ safi: evpn
- afi: ipv4
redistribute:
- connected:
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/vars/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/vars/main.yaml
index 293bbe67a..e22a90dc0 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/vars/main.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_address_family/vars/main.yaml
@@ -4,6 +4,13 @@ merged:
commands:
- router bgp 65000
+ - address-family l2vpn evpn
+ - neighbor 198.51.100.1 activate
+ - neighbor 198.51.100.1 inherit peer-policy LEAF-EVPN-PEER-POLICY
+ - address-family ipv4 vrf green
+ - advertise l2vpn evpn
+ - redistribute connected
+ - redistribute static
- address-family ipv4 multicast
- default-metric 12
- distance bgp 10 10 100
@@ -24,6 +31,22 @@ merged:
after:
address_family:
+ - afi: l2vpn
+ safi: evpn
+ neighbor:
+ - address: 198.51.100.1
+ activate: true
+ inherit: LEAF-EVPN-PEER-POLICY
+ - afi: ipv4
+ vrf: green
+ advertise:
+ afi: l2vpn
+ safi: evpn
+ redistribute:
+ - static:
+ set: true
+ - connected:
+ set: true
- afi: ipv4
redistribute:
- connected:
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/error_regex.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/error_regex.yaml
index 1578073cf..290765cbc 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/error_regex.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/error_regex.yaml
@@ -31,11 +31,6 @@
commands:
- show logging
- - name: Ensure task fails due to mismatched regex
- ansible.builtin.assert:
- that:
- - result.failed == true
-
- name: Pause to avoid rate limiting-2
ansible.builtin.pause:
seconds: 20
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/acl_config.j2 b/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/acl_config.j2
new file mode 100644
index 000000000..ec4ee46b7
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/acl_config.j2
@@ -0,0 +1,4 @@
+ip access-list extended test
+ permit ip host 192.0.2.1 any log
+ permit ip host 192.0.2.2 any log
+ permit ip host 192.0.2.3 any log
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/replace_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/replace_config.yaml
new file mode 100644
index 000000000..18f62808f
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/replace_config.yaml
@@ -0,0 +1,28 @@
+---
+- ansible.builtin.debug: msg="START cli/replace_block.yaml on connection={{ ansible_connection }}"
+
+- name: "setup"
+ cisco.ios.ios_config:
+ lines:
+ - "no ip access-list extended test"
+
+- name: "Populate ios acls configuration with replace block and lines options"
+ register: result1
+ cisco.ios.ios_config:
+ lines: "{{ lookup('template', 'basic/acl_config.j2') }}"
+ replace: block
+
+- ansible.builtin.assert:
+ that:
+ - result1.changed == true
+
+- name: "Populate acl configuration with replace block and src options"
+ register: result2
+ cisco.ios.ios_config:
+ src: basic/acl_config.j2
+ replace: block
+
+- ansible.builtin.assert:
+ that:
+ - result2.changed == true
+ - result1.commands == result2.commands
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/defaults/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/defaults/main.yaml
new file mode 100644
index 000000000..164afead2
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/defaults/main.yaml
@@ -0,0 +1,3 @@
+---
+testcase: "[^_].*"
+test_items: []
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/meta/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/meta/main.yaml
new file mode 100644
index 000000000..23d65c7ef
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/meta/main.yaml
@@ -0,0 +1,2 @@
+---
+dependencies: []
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tasks/cli.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tasks/cli.yaml
index cd8c04990..6f505600c 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tasks/cli.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tasks/cli.yaml
@@ -3,16 +3,19 @@
ansible.builtin.find:
paths: "{{ role_path }}/tests/cli"
patterns: "{{ testcase }}.yaml"
+ use_regex: true
register: test_cases
delegate_to: localhost
- name: Set test_items
ansible.builtin.set_fact:
test_items: "{{ test_cases.files | map(attribute='path') | list }}"
+ delegate_to: localhost
-- name: Run test cases (connection=ansible.netcommon.network_cli)
+- name: Run test case (connection=ansible.netcommon.network_cli)
ansible.builtin.include_tasks: "{{ test_case_to_run }}"
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
with_items: "{{ test_items }}"
loop_control:
loop_var: test_case_to_run
- tags: network_cli
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tasks/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tasks/main.yaml
new file mode 100644
index 000000000..39c4567e9
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tasks/main.yaml
@@ -0,0 +1,5 @@
+---
+- name: Main task for EVPN EVI module
+ ansible.builtin.include_tasks: cli.yaml
+ tags:
+ - network_cli
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_parsed.cfg b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_parsed.cfg
new file mode 100644
index 000000000..b2df4cb25
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_parsed.cfg
@@ -0,0 +1,9 @@
+l2vpn evpn instance 101 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ default-gateway advertise enable
+!
+l2vpn evpn instance 102 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+!
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_populate_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_populate_config.yaml
new file mode 100644
index 000000000..07d1d93c3
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_populate_config.yaml
@@ -0,0 +1,13 @@
+---
+- name: Populate configuration
+ cisco.ios.ios_evpn_evi:
+ config:
+ - evi: 101
+ replication_type: static
+ - evi: 102
+ replication_type: ingress
+ - evi: 201
+ replication_type: static
+ - evi: 202
+ replication_type: ingress
+ state: merged
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_remove_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_remove_config.yaml
new file mode 100644
index 000000000..b0892f314
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/_remove_config.yaml
@@ -0,0 +1,15 @@
+---
+- name: Remove VLAN config
+ ansible.netcommon.cli_config:
+ config: |
+ no vlan configuration 101
+ no vlan configuration 102
+ no vlan configuration 201
+ no vlan configuration 202
+ no vlan configuration 901
+ no vlan configuration 902
+
+- name: Remove all configuration evpn_evi
+ cisco.ios.ios_evpn_evi:
+ config:
+ state: deleted
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/deleted.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/deleted.yaml
new file mode 100644
index 000000000..4192f1844
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/deleted.yaml
@@ -0,0 +1,32 @@
+---
+- ansible.builtin.debug:
+ msg: Start Deleted integration state for ios_evpn_evi ansible_connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Delete attributes of all configured EVPN EVI
+ register: result
+ cisco.ios.ios_evpn_evi:
+ config:
+ - evi: 101
+ state: deleted
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ deleted['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - deleted['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - deleted['after'] == result['after']
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/empty_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/empty_config.yaml
new file mode 100644
index 000000000..b5b7be66d
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/empty_config.yaml
@@ -0,0 +1,58 @@
+---
+- ansible.builtin.debug:
+ msg: START ios_evpn_evi empty_config.yaml integration tests on connection={{ ansible_connection }}
+
+- name: Merged with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_evpn_evi:
+ config:
+ state: merged
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state merged'
+
+- name: Replaced with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_evpn_evi:
+ config:
+ state: replaced
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state replaced'
+
+- name: Overridden with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_evpn_evi:
+ config:
+ state: overridden
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state overridden'
+
+- name: Rendered with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_evpn_evi:
+ config:
+ state: rendered
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state rendered'
+
+- name: Parsed with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_evpn_evi:
+ running_config:
+ state: parsed
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of running_config parameter must not be empty for state parsed'
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/gathered.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/gathered.yaml
new file mode 100644
index 000000000..553cb862f
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/gathered.yaml
@@ -0,0 +1,22 @@
+---
+- ansible.builtin.debug:
+ msg: START ios_evpn_evi gathered integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Ios_evpn_evi gather - play
+ register: result
+ cisco.ios.ios_evpn_evi:
+ config:
+ state: gathered
+
+ - name: Ios_evpn_evi gather - assert
+ ansible.builtin.assert:
+ that:
+ - result.changed == false
+ - gathered['after'] == result['gathered']
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/merged.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/merged.yaml
new file mode 100644
index 000000000..c4b485cce
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/merged.yaml
@@ -0,0 +1,56 @@
+---
+- ansible.builtin.debug:
+ msg: START Merged ios_evpn_evi state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Merge provided configuration with device configuration
+ register: result
+ cisco.ios.ios_evpn_evi: &id001
+ config:
+ - evi: 101
+ replication_type: ingress
+ route_distinguisher: "1:1"
+ default_gateway:
+ advertise:
+ enable: false
+ ip:
+ local_learning:
+ enable: true
+ - evi: 202
+ replication_type: static
+ default_gateway:
+ advertise:
+ enable: true
+ ip:
+ local_learning:
+ disable: true
+ state: merged
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ merged['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - merged['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - merged['after'] == result['after']
+
+ - name: Merge provided configuration with device configuration (idempotent)
+ register: result
+ cisco.ios.ios_evpn_evi: *id001
+ - name: Assert that the previous task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/overridden.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/overridden.yaml
new file mode 100644
index 000000000..c33417f3e
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/overridden.yaml
@@ -0,0 +1,50 @@
+---
+- ansible.builtin.debug:
+ msg: START Overridden ios_evpn_evi state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Override device configuration of all EVPN EVI with provided configuration
+ register: result
+ cisco.ios.ios_evpn_evi: &id001
+ config:
+ - evi: 101
+ replication_type: ingress
+ default_gateway:
+ advertise:
+ enable: true
+ - evi: 202
+ replication_type: static
+ default_gateway:
+ advertise:
+ enable: true
+ state: overridden
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ overridden['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - overridden['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - overridden['after'] == result['after']
+
+ - name: Override device configuration of all EVPN EVI with provided configuration (idempotent)
+ register: result
+ cisco.ios.ios_evpn_evi: *id001
+ - name: Assert that task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/parsed.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/parsed.yaml
new file mode 100644
index 000000000..fec21d532
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/parsed.yaml
@@ -0,0 +1,19 @@
+---
+- ansible.builtin.debug:
+ msg: START Parsed ios_evpn_evi state for integration tests on connection={{ ansible_connection }}
+
+- block:
+ - name: Ios_evpn_evi parsed - play
+ register: result
+ cisco.ios.ios_evpn_evi:
+ running_config: "{{ lookup('file', '_parsed.cfg') }}"
+ state: parsed
+
+ - name: Ios_evpn_evi parsed - assert config
+ ansible.builtin.assert:
+ that:
+ - result.changed == false
+ - parsed['after'] == result['parsed']
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/rendered.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/rendered.yaml
new file mode 100644
index 000000000..8b2fd0dd9
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/rendered.yaml
@@ -0,0 +1,23 @@
+---
+- ansible.builtin.debug:
+ msg: START Rendered ios_evpn_evi state for integration tests on connection={{ ansible_connection }}
+
+- block:
+ - name: Ios_evpn_evi rendered - play
+ register: result
+ cisco.ios.ios_evpn_evi:
+ config:
+ - evi: 101
+ replication_type: ingress
+ default_gateway:
+ advertise:
+ enable: true
+ - evi: 202
+ replication_type: ingress
+ state: rendered
+
+ - name: Ios_evpn_evi rendered - assert commands
+ ansible.builtin.assert:
+ that:
+ - "{{ rendered['commands'] | symmetric_difference(result['rendered']) | length == 0 }}"
+ - result['changed'] == false
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/replaced.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/replaced.yaml
new file mode 100644
index 000000000..656cb23ef
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/tests/cli/replaced.yaml
@@ -0,0 +1,46 @@
+---
+- ansible.builtin.debug:
+ msg: START Replaced ios_evpn_evi state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Replaces device configuration of listed EVPN EVI with provided configuration
+ register: result
+ cisco.ios.ios_evpn_evi: &id001
+ config:
+ - evi: 101
+ replication_type: ingress
+ default_gateway:
+ advertise:
+ enable: true
+ - evi: 202
+ replication_type: ingress
+ state: replaced
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ replaced['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - replaced['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - replaced['after'] == result['after']
+
+ - name: Replaces device configuration of listed EVPN EVI with provided configuration (idempotent)
+ register: result
+ cisco.ios.ios_evpn_evi: *id001
+ - name: Assert that task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/vars/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/vars/main.yaml
new file mode 100644
index 000000000..4818d9828
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_evi/vars/main.yaml
@@ -0,0 +1,183 @@
+---
+merged:
+ before:
+ - evi: 101
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 102
+ encapsulation: vxlan
+ replication_type: ingress
+ - evi: 201
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 202
+ encapsulation: vxlan
+ replication_type: ingress
+ commands:
+ - l2vpn evpn instance 202 vlan-based
+ - default-gateway advertise enable
+ - ip local-learning disable
+ - replication-type static
+ - l2vpn evpn instance 101 vlan-based
+ - ip local-learning enable
+ - replication-type ingress
+ - rd 1:1
+ after:
+ - evi: 101
+ encapsulation: vxlan
+ replication_type: ingress
+ ip:
+ local_learning:
+ enable: true
+ route_distinguisher: "1:1"
+ - evi: 102
+ encapsulation: vxlan
+ replication_type: ingress
+ - evi: 201
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 202
+ encapsulation: vxlan
+ replication_type: static
+ ip:
+ local_learning:
+ disable: true
+ default_gateway:
+ advertise:
+ enable: true
+
+replaced:
+ before:
+ - evi: 101
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 102
+ encapsulation: vxlan
+ replication_type: ingress
+ - evi: 201
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 202
+ encapsulation: vxlan
+ replication_type: ingress
+ commands:
+ - l2vpn evpn instance 101 vlan-based
+ - replication-type ingress
+ - default-gateway advertise enable
+ after:
+ - evi: 101
+ default_gateway:
+ advertise:
+ enable: true
+ encapsulation: vxlan
+ replication_type: ingress
+ - evi: 102
+ encapsulation: vxlan
+ replication_type: ingress
+ - evi: 201
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 202
+ encapsulation: vxlan
+ replication_type: ingress
+
+overridden:
+ before:
+ - evi: 101
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 102
+ encapsulation: vxlan
+ replication_type: ingress
+ - evi: 201
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 202
+ encapsulation: vxlan
+ replication_type: ingress
+ commands:
+ - no l2vpn evpn instance 102 vlan-based
+ - no l2vpn evpn instance 201 vlan-based
+ - l2vpn evpn instance 101 vlan-based
+ - default-gateway advertise enable
+ - replication-type ingress
+ - l2vpn evpn instance 202 vlan-based
+ - default-gateway advertise enable
+ - replication-type static
+ after:
+ - evi: 101
+ encapsulation: vxlan
+ replication_type: ingress
+ default_gateway:
+ advertise:
+ enable: true
+ - evi: 202
+ encapsulation: vxlan
+ replication_type: static
+ default_gateway:
+ advertise:
+ enable: true
+
+deleted:
+ before:
+ - evi: 101
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 102
+ encapsulation: vxlan
+ replication_type: ingress
+ - evi: 201
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 202
+ encapsulation: vxlan
+ replication_type: ingress
+ commands:
+ - no l2vpn evpn instance 101 vlan-based
+ after:
+ - evi: 102
+ encapsulation: vxlan
+ replication_type: ingress
+ - evi: 201
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 202
+ encapsulation: vxlan
+ replication_type: ingress
+
+rendered:
+ commands:
+ - l2vpn evpn instance 101 vlan-based
+ - default-gateway advertise enable
+ - encapsulation vxlan
+ - replication-type ingress
+ - l2vpn evpn instance 202 vlan-based
+ - encapsulation vxlan
+ - replication-type ingress
+
+gathered:
+ after:
+ - evi: 101
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 102
+ encapsulation: vxlan
+ replication_type: ingress
+ - evi: 201
+ encapsulation: vxlan
+ replication_type: static
+ - evi: 202
+ encapsulation: vxlan
+ replication_type: ingress
+
+parsed:
+ after:
+ - evi: 101
+ encapsulation: vxlan
+ replication_type: ingress
+ default_gateway:
+ advertise:
+ enable: true
+ - evi: 102
+ encapsulation: vxlan
+ replication_type: ingress
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/defaults/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/defaults/main.yaml
new file mode 100644
index 000000000..164afead2
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/defaults/main.yaml
@@ -0,0 +1,3 @@
+---
+testcase: "[^_].*"
+test_items: []
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/meta/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/meta/main.yaml
new file mode 100644
index 000000000..23d65c7ef
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/meta/main.yaml
@@ -0,0 +1,2 @@
+---
+dependencies: []
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tasks/cli.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tasks/cli.yaml
new file mode 100644
index 000000000..6f505600c
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tasks/cli.yaml
@@ -0,0 +1,21 @@
+---
+- name: Collect all CLI test cases
+ ansible.builtin.find:
+ paths: "{{ role_path }}/tests/cli"
+ patterns: "{{ testcase }}.yaml"
+ use_regex: true
+ register: test_cases
+ delegate_to: localhost
+
+- name: Set test_items
+ ansible.builtin.set_fact:
+ test_items: "{{ test_cases.files | map(attribute='path') | list }}"
+ delegate_to: localhost
+
+- name: Run test case (connection=ansible.netcommon.network_cli)
+ ansible.builtin.include_tasks: "{{ test_case_to_run }}"
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ with_items: "{{ test_items }}"
+ loop_control:
+ loop_var: test_case_to_run
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tasks/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tasks/main.yaml
new file mode 100644
index 000000000..83b543a3f
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tasks/main.yaml
@@ -0,0 +1,5 @@
+---
+- name: Main task for evpn_global module
+ ansible.builtin.include_tasks: cli.yaml
+ tags:
+ - network_cli
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_parsed.cfg b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_parsed.cfg
new file mode 100644
index 000000000..c43065fd2
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_parsed.cfg
@@ -0,0 +1,5 @@
+l2vpn evpn
+ replication-type ingress
+ router-id Loopback1
+ default-gateway advertise
+ route-target auto vni
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_populate_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_populate_config.yaml
new file mode 100644
index 000000000..89c6d4ee8
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_populate_config.yaml
@@ -0,0 +1,19 @@
+---
+- name: Configure Loopback1
+ vars:
+ lines: "interface Loopback 1\nip address 172.16.254.4 255.255.255.255\nip pim sparse-mode\n"
+ ansible.netcommon.cli_config:
+ config: "{{ lines }}"
+
+- name: Populate configuration evpn_global
+ cisco.ios.ios_evpn_global:
+ config:
+ replication_type: ingress
+ route_target:
+ auto:
+ vni: true
+ router_id: Loopback1
+ ip:
+ local_learning:
+ disable: true
+ state: merged
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_remove_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_remove_config.yaml
new file mode 100644
index 000000000..8e07ea809
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/_remove_config.yaml
@@ -0,0 +1,5 @@
+---
+- name: Remove all configuration evpn_global
+ cisco.ios.ios_evpn_global:
+ config:
+ state: deleted
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/deleted.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/deleted.yaml
new file mode 100644
index 000000000..6ed823307
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/deleted.yaml
@@ -0,0 +1,38 @@
+---
+- ansible.builtin.debug:
+ msg: Start Deleted integration state for ios_evpn_global ansible_connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Ios_evpn_global deleted - play
+ register: result
+ cisco.ios.ios_evpn_global: &id001
+ config:
+ state: deleted
+
+ - name: Ios_evpn_global deleted - assert commands
+ ansible.builtin.assert:
+ that:
+ - "{{ deleted['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Ios_evpn_global deleted - assert before
+ ansible.builtin.assert:
+ that:
+ - deleted['before'] == result['before']
+
+ - name: Ios_evpn_global deleted - assert after
+ ansible.builtin.assert:
+ that:
+ - deleted['after'] == result['after']
+
+ - name: Ios_evpn_global deleted - play (idempotent)
+ register: result
+ cisco.ios.ios_evpn_global: *id001
+ - name: Ios_evpn_global deleted - assert above task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result.changed == false
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/empty_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/empty_config.yaml
new file mode 100644
index 000000000..8625feaa5
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/empty_config.yaml
@@ -0,0 +1,25 @@
+---
+- ansible.builtin.debug:
+ msg: START ios_evpn_global empty_config.yaml integration tests on connection={{ ansible_connection }}
+
+- name: Merged with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_evpn_global:
+ config:
+ state: merged
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state merged'
+
+- name: Replaced with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_evpn_global:
+ config:
+ state: replaced
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state replaced'
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/gathered.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/gathered.yaml
new file mode 100644
index 000000000..51bf9bc3d
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/gathered.yaml
@@ -0,0 +1,22 @@
+---
+- ansible.builtin.debug:
+ msg: START Gathered ios_evpn_global state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Ios_evpn_global gathered - play
+ register: result
+ cisco.ios.ios_evpn_global:
+ config:
+ state: gathered
+
+ - name: Ios_evpn_global gathered - assert config
+ ansible.builtin.assert:
+ that:
+ - result.changed == false
+ - gathered['after'] == result['gathered']
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/merged.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/merged.yaml
new file mode 100644
index 000000000..485c85778
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/merged.yaml
@@ -0,0 +1,50 @@
+---
+- ansible.builtin.debug:
+ msg: START Merged ios_evpn_global state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+
+- block:
+ - name: Ios_evpn_global merged - play
+ register: result
+ cisco.ios.ios_evpn_global: &id001
+ config:
+ router_id: Loopback1
+ replication_type: ingress
+ route_target:
+ auto:
+ vni: true
+ default_gateway:
+ advertise: false
+ ip:
+ local_learning:
+ disable: true
+ flooding_suppression:
+ address_resolution:
+ disable: false
+ state: merged
+
+ - name: Ios_evpn_global merged - assert commands
+ ansible.builtin.assert:
+ that:
+ - "{{ merged['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Ios_evpn_global merged - assert before
+ ansible.builtin.assert:
+ that:
+ - merged['before'] == result['before']
+
+ - name: Ios_evpn_global merged - assert after
+ ansible.builtin.assert:
+ that:
+ - merged['after'] == result['after']
+
+ - name: Ios_evpn_global merged - play (idempotent)
+ register: result
+ cisco.ios.ios_evpn_global: *id001
+ - name: Ios_evpn_global merged - assert above task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/parsed.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/parsed.yaml
new file mode 100644
index 000000000..2d582cab9
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/parsed.yaml
@@ -0,0 +1,19 @@
+---
+- ansible.builtin.debug:
+ msg: START Parsed ios_evpn_global state for integration tests on connection={{ ansible_connection }}
+
+- block:
+ - name: Ios_evpn_global parsed - play
+ register: result
+ cisco.ios.ios_evpn_global:
+ running_config: "{{ lookup('file', '_parsed.cfg') }}"
+ state: parsed
+
+ - name: Ios_evpn_global parsed - assert config
+ ansible.builtin.assert:
+ that:
+ - result.changed == false
+ - parsed['after'] == result['parsed']
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/rendered.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/rendered.yaml
new file mode 100644
index 000000000..e1fb538d0
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/rendered.yaml
@@ -0,0 +1,20 @@
+---
+- ansible.builtin.debug:
+ msg: START Rendered ios_evpn_global state for integration tests on connection={{ ansible_connection }}
+
+- block:
+ - name: Ios_evpn_global rendered - play
+ register: result
+ cisco.ios.ios_evpn_global:
+ config:
+ replication_type: static
+ route_target:
+ auto:
+ vni: true
+ state: rendered
+
+ - name: Ios_evpn_global rendered - assert commands
+ ansible.builtin.assert:
+ that:
+ - "{{ rendered['commands'] | symmetric_difference(result['rendered']) | length == 0 }}"
+ - result['changed'] == false
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/replaced.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/replaced.yaml
new file mode 100644
index 000000000..47a9bb62f
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/tests/cli/replaced.yaml
@@ -0,0 +1,45 @@
+---
+- ansible.builtin.debug:
+ msg: START Replaced ios_evpn_global state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Ios_evpn_global replaced - play
+ register: result
+ cisco.ios.ios_evpn_global: &id001
+ config:
+ replication_type: static
+ router_id: Loopback1
+ default_gateway:
+ advertise: true
+ flooding_suppression:
+ address_resolution:
+ disable: true
+ state: replaced
+
+ - name: Ios_evpn_global replaced - assert commands
+ ansible.builtin.assert:
+ that:
+ - "{{ replaced['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Ios_evpn_global replaced - assert before
+ ansible.builtin.assert:
+ that:
+ - replaced['before'] == result['before']
+
+ - name: Ios_evpn_global replaced - assert after
+ ansible.builtin.assert:
+ that:
+ - replaced['after'] == result['after']
+
+ - name: Ios_evpn_global replaced - play (idempotent)
+ register: result
+ cisco.ios.ios_evpn_global: *id001
+ - name: Ios_evpn_global replaced - assert above task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/vars/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/vars/main.yaml
new file mode 100644
index 000000000..7840aef0d
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_evpn_global/vars/main.yaml
@@ -0,0 +1,85 @@
+---
+merged:
+ before: {}
+ commands:
+ - l2vpn evpn
+ - ip local-learning disable
+ - replication-type ingress
+ - route-target auto vni
+ - router-id Loopback1
+ after:
+ replication_type: ingress
+ route_target:
+ auto:
+ vni: true
+ router_id: Loopback1
+ ip:
+ local_learning:
+ disable: true
+
+replaced:
+ before:
+ router_id: Loopback1
+ ip:
+ local_learning:
+ disable: true
+ replication_type: ingress
+ route_target:
+ auto:
+ vni: true
+ commands:
+ - l2vpn evpn
+ - default-gateway advertise
+ - flooding-suppression address-resolution disable
+ - no ip local-learning disable
+ - replication-type static
+ - no route-target auto vni
+ after:
+ default_gateway:
+ advertise: true
+ flooding_suppression:
+ address_resolution:
+ disable: true
+ replication_type: static
+ router_id: Loopback1
+
+deleted:
+ before:
+ replication_type: ingress
+ route_target:
+ auto:
+ vni: true
+ router_id: Loopback1
+ ip:
+ local_learning:
+ disable: true
+ commands:
+ - no l2vpn evpn
+ after: {}
+
+rendered:
+ commands:
+ - l2vpn evpn
+ - replication-type static
+ - route-target auto vni
+
+gathered:
+ after:
+ ip:
+ local_learning:
+ disable: true
+ replication_type: ingress
+ route_target:
+ auto:
+ vni: true
+ router_id: Loopback1
+
+parsed:
+ after:
+ replication_type: ingress
+ route_target:
+ auto:
+ vni: true
+ router_id: Loopback1
+ default_gateway:
+ advertise: true
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tests/cli/all_facts.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tests/cli/all_facts.yaml
index 1358a9ad2..ba8a1fd23 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tests/cli/all_facts.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tests/cli/all_facts.yaml
@@ -1,13 +1,14 @@
---
- ansible.builtin.debug: msg="START cli/all_facts.yaml on connection={{ ansible_connection }}"
-- name: Test getting all facts
+- name: Test fetching all facts
register: result
cisco.ios.ios_facts:
gather_subset:
- all
-- ansible.builtin.assert:
+- name: Assert output of all facts
+ ansible.builtin.assert:
that:
- result.changed == false
- "'config' in result.ansible_facts.ansible_net_gather_subset"
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/defaults/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/defaults/main.yaml
deleted file mode 100644
index 5f709c5aa..000000000
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/meta/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/meta/main.yaml
deleted file mode 100644
index ab3ad91bc..000000000
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/meta/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - prepare_ios_tests
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tasks/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tasks/main.yaml
deleted file mode 100644
index 5e6448cf7..000000000
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tasks/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- name: Main task for logging module
- ansible.builtin.include_tasks: cli.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tests/cli/basic.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tests/cli/basic.yaml
deleted file mode 100644
index d14396195..000000000
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tests/cli/basic.yaml
+++ /dev/null
@@ -1,134 +0,0 @@
----
-- name: Remove host logging
- cisco.ios.ios_logging: &id001
- dest: host
- name: 172.16.0.1
- state: absent
-
-- name: Remove console
- cisco.ios.ios_logging:
- dest: console
- level: warnings
- state: absent
-
-- name: Remove buffer
- cisco.ios.ios_logging:
- dest: buffered
- size: 8000
- state: absent
-
-- name: Set up host logging
- register: result
- cisco.ios.ios_logging:
- dest: host
- name: 172.16.0.1
- facility: local7
- state: present
-
-- ansible.builtin.assert:
- that:
- - result.changed == true
- - '"logging host 172.16.0.1" in result.commands'
- - '"logging facility local7" in result.commands'
-
-- name: Set up host logging again (idempotent)
- register: result
- cisco.ios.ios_logging:
- dest: host
- name: 172.16.0.1
- state: present
-
-- ansible.builtin.assert: &id002
- that:
- - result.changed == false
-
-- name: Delete/disable host logging
- register: result
- cisco.ios.ios_logging: *id001
-- ansible.builtin.assert:
- that:
- - result.changed == true
- - '"no logging host 172.16.0.1" in result.commands'
-
-- name: Delete/disable host logging (idempotent)
- register: result
- cisco.ios.ios_logging: *id001
-- ansible.builtin.assert: *id002
-- name: Console logging with level warnings
- register: result
- cisco.ios.ios_logging:
- dest: console
- level: warnings
- state: present
-
-- ansible.builtin.assert:
- that:
- - result.changed == true
- - '"logging console warnings" in result.commands'
-
-- name: Configure buffer size
- register: result
- cisco.ios.ios_logging:
- dest: buffered
- size: 8000
-
-- ansible.builtin.assert:
- that:
- - result.changed == true
- - '"logging buffered 8000" in result.commands'
-
-- name: Change logging parameters using aggregate
- register: result
- cisco.ios.ios_logging:
- aggregate:
- - dest: console
- level: notifications
-
- - dest: buffered
- size: 9000
-
-- ansible.builtin.assert:
- that:
- - result.changed == true
- - '"logging buffered 9000" in result.commands'
- - '"logging console notifications" in result.commands'
-
-- name: Set both logging destination and facility
- register: result
- cisco.ios.ios_logging: &id003
- dest: buffered
- facility: uucp
- level: alerts
- size: 4096
- state: present
-
-- ansible.builtin.assert:
- that:
- - result.changed == true
- - '"logging buffered 4096 alerts" in result.commands'
- - '"logging facility uucp" in result.commands'
-
-- name: Set both logging destination and facility (idempotent)
- register: result
- cisco.ios.ios_logging: *id003
-- ansible.builtin.assert: *id002
-- name: Remove logging as collection teardown
- register: result
- cisco.ios.ios_logging:
- aggregate:
- - dest: console
- level: notifications
-
- - dest: buffered
- size: 4096
- level: alerts
-
- - facility: uucp
- state: absent
-
-- ansible.builtin.assert:
- that:
- - result.changed == true
- - '"no logging console" in result.commands'
- - '"no logging buffered" in result.commands'
- - '"no logging facility uucp" in result.commands'
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging_global/tests/cli/deleted.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_logging_global/tests/cli/deleted.yaml
index c0690ed59..75cefbe36 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_logging_global/tests/cli/deleted.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_logging_global/tests/cli/deleted.yaml
@@ -1,6 +1,6 @@
---
- ansible.builtin.debug:
- msg: Start Deleted integration state for ios_logging ansible_connection={{ ansible_connection }}
+ msg: Start Deleted integration state for ios_logging_global ansible_connection={{ ansible_connection }}
- ansible.builtin.include_tasks: _remove_config.yaml
- ansible.builtin.include_tasks: _populate_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_initial_vrf_setup.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_initial_vrf_setup.yaml
index 9c2298d9c..8439fa2f2 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_initial_vrf_setup.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_initial_vrf_setup.yaml
@@ -1,6 +1,9 @@
---
- name: Create and setup VRF configuration
- vars:
- lines: "vrf definition ospf_vrf\naddress-family ipv4\nvrf definition blue\naddress-family ipv4\n"
- ansible.netcommon.cli_config:
- config: "{{ lines }}"
+ cisco.ios.ios_config:
+ lines:
+ - rd 100:1
+ - route-target export 100:1
+ - route-target import 100:1
+ parents:
+ - ip vrf blue
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_parsed.cfg b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_parsed.cfg
index c3b4affb1..cbf17bf16 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_parsed.cfg
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_parsed.cfg
@@ -9,11 +9,10 @@ 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 5 capability default-exclusion
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_in in
area 10 filter-list prefix test_prefix_out out
- area 5 authentication
- area 5 capability default-exclusion
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/merged.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/merged.yaml
index 439a1ff5f..27f07c04b 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/merged.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/merged.yaml
@@ -19,8 +19,6 @@
areas:
- area_id: "5"
capability: true
- authentication:
- enable: true
- area_id: "10"
authentication:
message_digest: true
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/overridden.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/overridden.yaml
index b6c739efc..d045ef058 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/overridden.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/overridden.yaml
@@ -30,12 +30,13 @@
authentication:
message_digest: true
- process_id: 100
- vrf: ospf_vrf
+ vrf: blue
domain_id:
ip_address:
address: 192.0.5.1
auto_cost:
reference_bandwidth: 5
+ set: true
areas:
- area_id: "5"
authentication:
@@ -62,11 +63,12 @@
- "{{ overridden['after']['processes'] | symmetric_difference(result['after']['processes']) | length == 0 }}"
- name: Override provided OSPF v2 configuration (idempotent)
- register: result
+ register: result_id
cisco.ios.ios_ospfv2: *id001
+
- name: Assert that task was idempotent
ansible.builtin.assert:
that:
- - result['changed'] == false
+ - result_id['changed'] == false
always:
- ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/replaced.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/replaced.yaml
index b1bdade55..b2bff79a0 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/replaced.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/replaced.yaml
@@ -30,12 +30,13 @@
authentication:
message_digest: true
- process_id: 100
- vrf: ospf_vrf
+ vrf: blue
domain_id:
ip_address:
address: 192.0.5.1
auto_cost:
reference_bandwidth: 5
+ set: true
areas:
- area_id: "5"
authentication:
@@ -62,11 +63,12 @@
- "{{ replaced['after']['processes'] | symmetric_difference(result['after']['processes']) | length == 0 }}"
- name: Replaced provided OSPF v2 configuration (idempotent)
- register: result
+ register: result_id
cisco.ios.ios_ospfv2: *id001
+
- name: Assert that task was idempotent
ansible.builtin.assert:
that:
- - result['changed'] == false
+ - result_id['changed'] == false
always:
- ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/rtt.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/rtt.yaml
index b87da54b9..87a5694cb 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/rtt.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/rtt.yaml
@@ -93,7 +93,7 @@
authentication:
message_digest: true
- process_id: 100
- vrf: ospf_vrf
+ vrf: blue
domain_id:
ip_address:
address: 192.0.5.1
@@ -121,9 +121,14 @@
config: "{{ ansible_facts['network_resources']['ospfv2'] }}"
state: overridden
- - ansible.builtin.assert:
+ - name: Commands output
+ ansible.builtin.debug:
+ msg: "{{ revert }}"
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
that:
- - revert.commands|length == 24
+ - revert.commands|length == 23
- revert.changed == true
- revert.commands|symmetric_difference(rtt.commands) == []
always:
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/vars/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/vars/main.yaml
index 307b591e2..417cc5c9e 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/vars/main.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/vars/main.yaml
@@ -20,15 +20,33 @@ merged:
- 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:
processes:
- areas:
+ - area_id: "10"
+ capability: true
+ auto_cost:
+ reference_bandwidth: 4
+ set: true
+ 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
+ - areas:
- area_id: "5"
- authentication:
- enable: true
capability: true
- area_id: "10"
authentication:
@@ -54,30 +72,10 @@ merged:
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
replaced:
commands:
- - router ospf 100 vrf ospf_vrf
+ - router ospf 100 vrf blue
- auto-cost reference-bandwidth 5
- domain-id 192.0.5.1
- area 5 authentication message-digest
@@ -98,9 +96,24 @@ replaced:
after:
processes:
- areas:
- - area_id: "5"
+ - area_id: "10"
authentication:
- enable: true
+ message_digest: true
+ default_cost: 10
+ domain_id:
+ ip_address:
+ address: 192.0.4.1
+ max_metric:
+ on_startup:
+ time: 200
+ router_lsa: true
+ maximum_paths: 15
+ process_id: 200
+ ttl_security:
+ hops: 7
+ vrf: blue
+ - areas:
+ - area_id: "5"
capability: true
- area_id: "10"
authentication:
@@ -136,33 +149,17 @@ replaced:
translate: suppress-fa
auto_cost:
reference_bandwidth: 5
+ set: true
domain_id:
ip_address:
address: 192.0.5.1
process_id: 100
- vrf: ospf_vrf
- - areas:
- - area_id: "10"
- authentication:
- message_digest: true
- default_cost: 10
- domain_id:
- ip_address:
- address: 192.0.4.1
- max_metric:
- on_startup:
- time: 200
- router_lsa: true
- maximum_paths: 15
- process_id: 200
- ttl_security:
- hops: 7
vrf: blue
overridden:
commands:
- no router ospf 1
- - router ospf 100 vrf ospf_vrf
+ - router ospf 100 vrf blue
- auto-cost reference-bandwidth 5
- domain-id 192.0.5.1
- area 5 authentication message-digest
@@ -183,21 +180,6 @@ overridden:
after:
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
- vrf: ospf_vrf
- - areas:
- area_id: "10"
authentication:
message_digest: true
@@ -214,6 +196,22 @@ overridden:
ttl_security:
hops: 7
vrf: blue
+ - areas:
+ - area_id: "5"
+ authentication:
+ message_digest: true
+ nssa:
+ default_information_originate:
+ metric: 10
+ translate: suppress-fa
+ auto_cost:
+ reference_bandwidth: 5
+ set: true
+ domain_id:
+ ip_address:
+ address: 192.0.5.1
+ process_id: 100
+ vrf: blue
deleted:
commands:
@@ -224,7 +222,7 @@ deleted:
rtt:
commands:
- - no router ospf 100 vrf ospf_vrf
+ - no router ospf 100 vrf blue
- router ospf 200 vrf blue
- auto-cost reference-bandwidth 4
- distribute-list 10 out
@@ -246,5 +244,4 @@ rtt:
- 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
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_ping/tests/cli/ping.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_ping/tests/cli/ping.yaml
index bc52e5ea8..71eda7ecb 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_ping/tests/cli/ping.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_ping/tests/cli/ping.yaml
@@ -25,6 +25,12 @@
cisco.ios.ios_ping:
dest: "{{ management_ip }}"
+- name: Expected successful ping with size
+ register: esp
+ cisco.ios.ios_ping:
+ dest: "{{ management_ip }}"
+ size: 500
+
- name: Unexpected unsuccessful ping
register: uup
ignore_errors: true
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/overridden.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/overridden.yaml
index 901bd9524..e0a1ffd6b 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/overridden.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/overridden.yaml
@@ -12,35 +12,34 @@
config:
- afi: ipv4
prefix_lists:
- - name: 10
- description: this is override test
+ - description: this is override test
entries:
- action: deny
- prefix: 12.0.0.0/8
ge: 15
+ prefix: 12.0.0.0/8
sequence: 15
- action: deny
- prefix: 14.0.0.0/8
ge: 20
le: 21
+ prefix: 14.0.0.0/8
sequence: 20
- - name: test_override
- description: this is override test
+ name: "10"
+ - description: this is override test
entries:
- action: deny
- prefix: 35.0.0.0/8
ge: 20
+ prefix: 35.0.0.0/8
sequence: 10
+ name: test_override
- afi: ipv6
prefix_lists:
- - name: test_ipv6
- description: this is ipv6 override test
- entries:
+ - entries:
- action: deny
- prefix: 2001:DB8:0:4::/64
ge: 80
le: 100
+ prefix: 2001:DB8:0:4::/64
sequence: 10
+ name: test_ipv6
state: overridden
- name: Assert that correct set of commands were generated
@@ -56,6 +55,7 @@
- name: Override provided prefix lists configuration (idempotent)
register: result
cisco.ios.ios_prefix_lists: *id001
+
- name: Assert that task was idempotent
ansible.builtin.assert:
that:
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/replaced.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/replaced.yaml
index cbd519d9c..2ac0d2d71 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/replaced.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/tests/cli/replaced.yaml
@@ -33,7 +33,6 @@
- afi: ipv6
prefix_lists:
- name: test_ipv6
- description: this is ipv6 replace test
entries:
- action: deny
prefix: 2001:DB8:0:4::/64
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/vars/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/vars/main.yaml
index 78136adc0..c42ebac6c 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/vars/main.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_prefix_lists/vars/main.yaml
@@ -70,16 +70,16 @@ merged:
overridden:
commands:
- - no ip prefix-list test
- - no ip prefix-list test_prefix
- ip prefix-list 10 description this is override test
- - no ip prefix-list 10 seq 10 deny 35.0.0.0/8 ge 10
- no ip prefix-list 10 seq 5 deny 1.0.0.0/8 le 15
- - ip prefix-list test_override seq 10 deny 35.0.0.0/8 ge 20
+ - no ip prefix-list 10 seq 10 deny 35.0.0.0/8 ge 10
- ip prefix-list test_override description this is override test
+ - ip prefix-list test_override seq 10 deny 35.0.0.0/8 ge 20
+ - no ip prefix-list test
+ - no ip prefix-list test_prefix
+ - no ipv6 prefix-list test_ipv6 description this is ipv6 prefix-list
- no ipv6 prefix-list test_ipv6 seq 10 deny 2001:DB8:0:4::/64 ge 80
- ipv6 prefix-list test_ipv6 seq 10 deny 2001:DB8:0:4::/64 ge 80 le 100
- - ipv6 prefix-list test_ipv6 description this is ipv6 override test
after:
- afi: ipv4
@@ -105,8 +105,7 @@ overridden:
name: test_override
- afi: ipv6
prefix_lists:
- - description: this is ipv6 override test
- entries:
+ - entries:
- action: deny
ge: 80
le: 100
@@ -117,13 +116,13 @@ overridden:
replaced:
commands:
- ip prefix-list 10 description this is replace test
- - no ip prefix-list 10 seq 10 deny 35.0.0.0/8 ge 10
- no ip prefix-list 10 seq 5 deny 1.0.0.0/8 le 15
- - ip prefix-list test_replace seq 10 deny 35.0.0.0/8 ge 20
+ - no ip prefix-list 10 seq 10 deny 35.0.0.0/8 ge 10
- ip prefix-list test_replace description this is replace test
+ - ip prefix-list test_replace seq 10 deny 35.0.0.0/8 ge 20
+ - no ipv6 prefix-list test_ipv6 description this is ipv6 prefix-list
- no ipv6 prefix-list test_ipv6 seq 10 deny 2001:DB8:0:4::/64 ge 80
- ipv6 prefix-list test_ipv6 seq 10 deny 2001:DB8:0:4::/64 ge 80 le 100
- - ipv6 prefix-list test_ipv6 description this is ipv6 replace test
after:
- afi: ipv4
@@ -168,8 +167,7 @@ replaced:
name: test_replace
- afi: ipv6
prefix_lists:
- - description: this is ipv6 replace test
- entries:
+ - entries:
- action: deny
ge: 80
le: 100
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_user/tests/cli/auth.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_user/tests/cli/auth.yaml
index 5d42f498e..3cb732e7f 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_user/tests/cli/auth.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_user/tests/cli/auth.yaml
@@ -37,6 +37,17 @@
ansible.builtin.assert:
that:
- results.failed
+
+ - name: Test long password fails
+ cisco.ios.ios_user:
+ name: auth_user
+ privilege: 15
+ role: network-operator
+ state: present
+ configured_password: "{{ 'a' * 128 }}"
+ register: result_fail
+ failed_when: "'Invalid Password length' not in result_fail.msg"
+
always:
- name: Reset connection with {{ ansible_user }}
ansible.builtin.meta: reset_connection
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_parsed_vlan_config.cfg b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_parsed_vlan_config.cfg
new file mode 100644
index 000000000..0c81de124
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_parsed_vlan_config.cfg
@@ -0,0 +1,12 @@
+vlan configuration 101
+ member evpn-instance 101 vni 10101
+vlan configuration 102
+ member evpn-instance 102 vni 10102
+vlan configuration 201
+ member evpn-instance 201 vni 10201
+vlan configuration 202
+ member evpn-instance 202 vni 10202
+vlan configuration 901
+ member vni 50901
+vlan configuration 902
+ member vni 50902
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_populate_config_vlan_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_populate_config_vlan_config.yaml
new file mode 100644
index 000000000..d1c517a03
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_populate_config_vlan_config.yaml
@@ -0,0 +1,17 @@
+---
+- name: Populate configuration
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 101
+ member:
+ vni: 10101
+ evi: 101
+ - vlan_id: 102
+ member:
+ vni: 10102
+ evi: 102
+ - vlan_id: 901
+ member:
+ vni: 50901
+ configuration: true
+ state: merged
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_remove_config_vlan_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_remove_config_vlan_config.yaml
new file mode 100644
index 000000000..f78bb0c56
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_remove_config_vlan_config.yaml
@@ -0,0 +1,12 @@
+---
+- name: Remove configuration
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 101
+ - vlan_id: 102
+ - vlan_id: 201
+ - vlan_id: 202
+ - vlan_id: 901
+ - vlan_id: 902
+ configuration: true
+ state: deleted
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/deleted_vlan_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/deleted_vlan_config.yaml
new file mode 100644
index 000000000..21249d763
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/deleted_vlan_config.yaml
@@ -0,0 +1,39 @@
+---
+- ansible.builtin.debug:
+ msg: Start Deleted integration state for ios_vlans ansible_connection={{ ansible_connection }}
+
+- block:
+ - ansible.builtin.include_tasks: _remove_config_vlan_config.yaml
+ - ansible.builtin.include_tasks: _populate_config_vlan_config.yaml
+
+- block:
+ - name: Delete vlans attributes for all configured vlans
+ register: result
+ cisco.ios.ios_vlans: &id001
+ configuration: true
+ state: deleted
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ deleted_vlan_config['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - deleted_vlan_config['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - deleted_vlan_config['after'] == result['after']
+
+ - name: Delete vlans attributes for all configured vlans (idempotent)
+ register: result
+ cisco.ios.ios_vlans: *id001
+ - name: Assert that the previous task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result.changed == false
+ always:
+ - ansible.builtin.include_tasks: _remove_config_vlan_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/gathered_vlan_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/gathered_vlan_config.yaml
new file mode 100644
index 000000000..576adee2f
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/gathered_vlan_config.yaml
@@ -0,0 +1,23 @@
+---
+- ansible.builtin.debug:
+ msg: START ios_vlans gathered integration tests on connection={{ ansible_connection }}
+
+- block:
+ - ansible.builtin.include_tasks: _remove_config_vlan_config.yaml
+ - ansible.builtin.include_tasks: _populate_config_vlan_config.yaml
+
+- block:
+ - name: Gather the provided configuration with the existing running configuration
+ register: result
+ cisco.ios.ios_vlans:
+ config:
+ configuration: true
+ state: gathered
+
+ - name: Assert
+ ansible.builtin.assert:
+ that:
+ - gathered_vlan_config.config == result.gathered
+ - result['changed'] == false
+ always:
+ - ansible.builtin.include_tasks: _remove_config_vlan_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/merged_vlan_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/merged_vlan_config.yaml
new file mode 100644
index 000000000..6efce0fc0
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/merged_vlan_config.yaml
@@ -0,0 +1,46 @@
+---
+- ansible.builtin.debug:
+ msg: START Merged ios_vlans state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config_vlan_config.yaml
+- ansible.builtin.include_tasks: _populate_config_vlan_config.yaml
+
+- block:
+ - name: Merge provided configuration with device configuration
+ register: result
+ cisco.ios.ios_vlans: &id001
+ config:
+ - vlan_id: 201
+ member:
+ vni: 10201
+ evi: 201
+ - vlan_id: 902
+ member:
+ vni: 50902
+ configuration: true
+ state: merged
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ merged_vlan_config['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - merged_vlan_config['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - merged_vlan_config['after'] == result['after']
+
+ - name: Merge provided configuration with device configuration (idempotent)
+ register: result
+ cisco.ios.ios_vlans: *id001
+ - name: Assert that the previous task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+ always:
+ - ansible.builtin.include_tasks: _remove_config_vlan_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/overridden_vlan_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/overridden_vlan_config.yaml
new file mode 100644
index 000000000..52944e5ce
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/overridden_vlan_config.yaml
@@ -0,0 +1,48 @@
+---
+- ansible.builtin.debug:
+ msg: START Overridden ios_vlans state for integration tests on connection={{ ansible_connection }}
+
+- block:
+ - ansible.builtin.include_tasks: _remove_config_vlan_config.yaml
+ - ansible.builtin.include_tasks: _populate_config_vlan_config.yaml
+
+- block:
+ - name: Override device configuration of all vlans with provided configuration
+ register: result
+ cisco.ios.ios_vlans: &id001
+ config:
+ - vlan_id: 101
+ member:
+ vni: 10102
+ evi: 102
+ - vlan_id: 102
+ member:
+ vni: 10101
+ evi: 101
+ configuration: true
+ state: overridden
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ overridden_vlan_config['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - overridden_vlan_config['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - overridden_vlan_config['after'] == result['after']
+
+ - name: Override device configuration of all interfaces with provided configuration (idempotent)
+ register: result
+ cisco.ios.ios_vlans: *id001
+ - name: Assert that task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+ always:
+ - ansible.builtin.include_tasks: _remove_config_vlan_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/parsed_vlan_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/parsed_vlan_config.yaml
new file mode 100644
index 000000000..7d8311711
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/parsed_vlan_config.yaml
@@ -0,0 +1,17 @@
+---
+- ansible.builtin.debug:
+ msg: START ios_vlans parsed integration tests on connection={{ ansible_connection }}
+
+- block:
+ - name: Parse the commands for provided configuration
+ become: true
+ register: result
+ cisco.ios.ios_vlans:
+ running_config: "{{ lookup('file', '_parsed_vlan_config.cfg') }}"
+ configuration: true
+ state: parsed
+
+ - ansible.builtin.assert:
+ that:
+ - result.changed == false
+ - parsed_vlan_config.config == result.parsed
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/rendered_vlan_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/rendered_vlan_config.yaml
new file mode 100644
index 000000000..63cc24a29
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/rendered_vlan_config.yaml
@@ -0,0 +1,28 @@
+---
+- ansible.builtin.debug:
+ msg: Start ios_vlans rendered integration tests ansible_connection={{ ansible_connection }}
+
+- block:
+ - name: Render the commands for provided configuration
+ become: true
+ register: result
+ cisco.ios.ios_vlans:
+ config:
+ - vlan_id: 101
+ member:
+ vni: 10101
+ evi: 101
+ - vlan_id: 102
+ member:
+ vni: 10102
+ evi: 102
+ - vlan_id: 901
+ member:
+ vni: 50901
+ configuration: true
+ state: rendered
+
+ - ansible.builtin.assert:
+ that:
+ - result.changed == false
+ - result.rendered|symmetric_difference(rendered_vlan_config.commands) == []
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/vars/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/vars/main.yaml
index 72400621d..6092684a9 100644
--- a/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/vars/main.yaml
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/vars/main.yaml
@@ -93,6 +93,43 @@ merged:
shutdown: enabled
state: active
vlan_id: 1005
+merged_vlan_config:
+ before:
+ - vlan_id: 101
+ member:
+ evi: 101
+ vni: 10101
+ - vlan_id: 102
+ member:
+ evi: 102
+ vni: 10102
+ - vlan_id: 901
+ member:
+ vni: 50901
+ commands:
+ - vlan configuration 201
+ - member evpn-instance 201 vni 10201
+ - vlan configuration 902
+ - member vni 50902
+ after:
+ - vlan_id: 101
+ member:
+ evi: 101
+ vni: 10101
+ - vlan_id: 102
+ member:
+ evi: 102
+ vni: 10102
+ - vlan_id: 201
+ member:
+ evi: 201
+ vni: 10201
+ - vlan_id: 901
+ member:
+ vni: 50901
+ - vlan_id: 902
+ member:
+ vni: 50902
replaced:
before:
- mtu: 1500
@@ -278,6 +315,36 @@ overridden:
shutdown: enabled
state: active
vlan_id: 1005
+overridden_vlan_config:
+ before:
+ - vlan_id: 101
+ - vlan_id: 102
+ member:
+ evi: 102
+ vni: 10102
+ - vlan_id: 901
+ member:
+ vni: 50901
+ commands:
+ - vlan configuration 101
+ - no member evpn-instance 101 vni 10101
+ - vlan configuration 102
+ - no member evpn-instance 102 vni 10102
+ - vlan configuration 101
+ - member evpn-instance 102 vni 10102
+ - vlan configuration 102
+ - member evpn-instance 101 vni 10101
+ - no vlan configuration 901
+
+ after:
+ - vlan_id: 101
+ member:
+ evi: 102
+ vni: 10102
+ - vlan_id: 102
+ member:
+ evi: 101
+ vni: 10101
deleted:
before:
- mtu: 1500
@@ -350,6 +417,26 @@ deleted:
shutdown: enabled
state: active
vlan_id: 1005
+deleted_vlan_config:
+ before:
+ - vlan_id: 101
+ member:
+ evi: 101
+ vni: 10101
+ - vlan_id: 102
+ member:
+ evi: 102
+ vni: 10102
+ - vlan_id: 901
+ member:
+ vni: 50901
+ commands:
+ - no vlan configuration 101
+ - no vlan configuration 102
+ - no vlan configuration 901
+
+ after: []
+
gathered:
config:
- mtu: 1500
@@ -392,6 +479,21 @@ gathered:
shutdown: enabled
state: active
vlan_id: 1005
+
+gathered_vlan_config:
+ config:
+ - vlan_id: 101
+ member:
+ evi: 101
+ vni: 10101
+ - vlan_id: 102
+ member:
+ evi: 102
+ vni: 10102
+ - vlan_id: 901
+ member:
+ vni: 50901
+
parsed:
config:
- mtu: 1500
@@ -435,6 +537,31 @@ parsed:
state: active
vlan_id: 1005
+parsed_vlan_config:
+ config:
+ - vlan_id: 101
+ member:
+ evi: 101
+ vni: 10101
+ - vlan_id: 102
+ member:
+ evi: 102
+ vni: 10102
+ - vlan_id: 201
+ member:
+ evi: 201
+ vni: 10201
+ - vlan_id: 202
+ member:
+ evi: 202
+ vni: 10202
+ - vlan_id: 901
+ member:
+ vni: 50901
+ - vlan_id: 902
+ member:
+ vni: 50902
+
rendered:
commands:
- vlan 10
@@ -452,6 +579,15 @@ rendered:
- state suspend
- shutdown
+rendered_vlan_config:
+ commands:
+ - vlan configuration 101
+ - member evpn-instance 101 vni 10101
+ - vlan configuration 102
+ - member evpn-instance 102 vni 10102
+ - vlan configuration 901
+ - member vni 50901
+
rtt:
commands:
- vlan 10
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/defaults/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/defaults/main.yaml
new file mode 100644
index 000000000..164afead2
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/defaults/main.yaml
@@ -0,0 +1,3 @@
+---
+testcase: "[^_].*"
+test_items: []
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/meta/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/meta/main.yaml
new file mode 100644
index 000000000..23d65c7ef
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/meta/main.yaml
@@ -0,0 +1,2 @@
+---
+dependencies: []
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tasks/cli.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tasks/cli.yaml
new file mode 100644
index 000000000..6f505600c
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tasks/cli.yaml
@@ -0,0 +1,21 @@
+---
+- name: Collect all CLI test cases
+ ansible.builtin.find:
+ paths: "{{ role_path }}/tests/cli"
+ patterns: "{{ testcase }}.yaml"
+ use_regex: true
+ register: test_cases
+ delegate_to: localhost
+
+- name: Set test_items
+ ansible.builtin.set_fact:
+ test_items: "{{ test_cases.files | map(attribute='path') | list }}"
+ delegate_to: localhost
+
+- name: Run test case (connection=ansible.netcommon.network_cli)
+ ansible.builtin.include_tasks: "{{ test_case_to_run }}"
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ with_items: "{{ test_items }}"
+ loop_control:
+ loop_var: test_case_to_run
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tasks/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tasks/main.yaml
new file mode 100644
index 000000000..d80ee1ae2
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tasks/main.yaml
@@ -0,0 +1,5 @@
+---
+- name: Main task for VXLAN VTEP module
+ ansible.builtin.include_tasks: cli.yaml
+ tags:
+ - network_cli
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_parsed.cfg b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_parsed.cfg
new file mode 100644
index 000000000..46ecf2e1d
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_parsed.cfg
@@ -0,0 +1,7 @@
+interface nve1
+ source-interface Loopback1
+ host-reachability protocol bgp
+ member vni 10101 ingress-replication
+ member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ member vni 50901 vrf green
+ member vni 50902 vrf blue
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_config.yaml
new file mode 100644
index 000000000..1587cb9bc
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_config.yaml
@@ -0,0 +1,34 @@
+---
+- name: Populate VXLAN VTEP configuration
+ cisco.ios.ios_vxlan_vtep:
+ config:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: ingress
+ - vni: 10102
+ replication:
+ type: ingress
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.101
+ ipv6: FF0E:225::101
+ - vni: 10202
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.102
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: green
+ - vni: 50902
+ vrf: blue
+ state: merged
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_vlan_vrf_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_vlan_vrf_config.yaml
new file mode 100644
index 000000000..c6d5dee3e
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_populate_vlan_vrf_config.yaml
@@ -0,0 +1,61 @@
+---
+- name: Configure VLANs and VRFs
+ ansible.netcommon.cli_config:
+ config: |
+ vlan 101
+ name Access_VLAN_101
+ vlan 102
+ name Access_VLAN_102
+ vlan 201
+ name Access_VLAN_201
+ vlan 202
+ name Access_VLAN_202
+ vlan 901
+ name Core_VLAN_VRF_green
+ vlan 902
+ name Core_VLAN_VRF_blue
+ vlan configuration 101
+ member evpn-instance 101 vni 10101
+ vlan configuration 102
+ member evpn-instance 102 vni 10102
+ vlan configuration 201
+ member evpn-instance 201 vni 10201
+ vlan configuration 202
+ member evpn-instance 202 vni 10202
+ vlan configuration 901
+ member vni 50901
+ vlan configuration 902
+ member vni 50902
+ vrf definition blue
+ description blue VRF defn
+ rd 2:2
+ !
+ address-family ipv4
+ route-target export 2:2
+ route-target import 2:2
+ route-target export 2:2 stitching
+ route-target import 2:2 stitching
+ exit-address-family
+ !
+ address-family ipv6
+ route-target export 2:2
+ route-target import 2:2
+ route-target import 2:2 stitching
+ exit-address-family
+ vrf definition green
+ description green VRF defn
+ rd 1:1
+ !
+ address-family ipv4
+ route-target export 1:1
+ route-target import 1:1
+ route-target export 1:1 stitching
+ route-target import 1:1 stitching
+ exit-address-family
+ !
+ address-family ipv6
+ route-target export 1:1
+ route-target import 1:1
+ route-target export 1:1 stitching
+ route-target import 1:1 stitching
+ exit-address-family
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_remove_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_remove_config.yaml
new file mode 100644
index 000000000..52c43242f
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/_remove_config.yaml
@@ -0,0 +1,6 @@
+---
+- name: Remove VXLAN VTEP configuration
+ cisco.ios.ios_vxlan_vtep:
+ config:
+ - interface: nve1
+ state: deleted
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/deleted.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/deleted.yaml
new file mode 100644
index 000000000..75d18ddec
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/deleted.yaml
@@ -0,0 +1,33 @@
+---
+- ansible.builtin.debug:
+ msg: Start Deleted integration state for ios_vxlan_vtep ansible_connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_vlan_vrf_config.yaml
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Delete provided VXLAN VTEP interface
+ register: result
+ cisco.ios.ios_vxlan_vtep: &id001
+ config:
+ - interface: nve1
+ state: deleted
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ deleted['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - "{{ merged['after'] | symmetric_difference(result['before']) | length == 0 }}"
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - "{{ deleted['after'] | symmetric_difference(result['after']) | length == 0 }}"
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/empty_config.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/empty_config.yaml
new file mode 100644
index 000000000..4034115e5
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/empty_config.yaml
@@ -0,0 +1,58 @@
+---
+- ansible.builtin.debug:
+ msg: START ios_vxlan_vtep empty_config.yaml integration tests on connection={{ ansible_connection }}
+
+- name: Merged with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_vxlan_vtep:
+ config:
+ state: merged
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state merged'
+
+- name: Replaced with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_vxlan_vtep:
+ config:
+ state: replaced
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state replaced'
+
+- name: Overridden with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_vxlan_vtep:
+ config:
+ state: overridden
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state overridden'
+
+- name: Rendered with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_vxlan_vtep:
+ config:
+ state: rendered
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of config parameter must not be empty for state rendered'
+
+- name: Parsed with empty configuration should give appropriate error message
+ register: result
+ ignore_errors: true
+ cisco.ios.ios_vxlan_vtep:
+ running_config:
+ state: parsed
+
+- ansible.builtin.assert:
+ that:
+ - result.msg == 'value of running_config parameter must not be empty for state parsed'
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/gathered.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/gathered.yaml
new file mode 100644
index 000000000..2f334a79f
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/gathered.yaml
@@ -0,0 +1,23 @@
+---
+- ansible.builtin.debug:
+ msg: START ios_vxlan_vtep gathered integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_vlan_vrf_config.yaml
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Ios_vxlan_vtep gather - play
+ register: result
+ cisco.ios.ios_vxlan_vtep:
+ config:
+ state: gathered
+
+ - name: Ios_vxlan_vtep gather - assert
+ ansible.builtin.assert:
+ that:
+ - result.changed == false
+ - gathered['config'] == result['gathered']
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/merged.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/merged.yaml
new file mode 100644
index 000000000..ba004e9db
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/merged.yaml
@@ -0,0 +1,67 @@
+---
+- ansible.builtin.debug:
+ msg: START Merged ios_vxlan_vtep state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_vlan_vrf_config.yaml
+
+- block:
+ - name: Merge provided configuration with device configuration
+ register: result
+ cisco.ios.ios_vxlan_vtep: &id001
+ config:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: ingress
+ - vni: 10102
+ replication:
+ type: ingress
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.101
+ ipv6: FF0E:225::101
+ - vni: 10202
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.102
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: green
+ - vni: 50902
+ vrf: blue
+ state: merged
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ merged['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - merged['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - merged['after'] == result['after']
+
+ - name: Merge provided configuration with device configuration (idempotent)
+ register: result
+ cisco.ios.ios_vxlan_vtep: *id001
+ - name: Assert that the previous task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/overridden.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/overridden.yaml
new file mode 100644
index 000000000..187d71eae
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/overridden.yaml
@@ -0,0 +1,59 @@
+---
+- ansible.builtin.debug:
+ msg: START Overridden ios_vxlan_vtep state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_vlan_vrf_config.yaml
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Override device configuration of all VTEP interfaces with provided configuration
+ register: result
+ cisco.ios.ios_vxlan_vtep: &id001
+ config:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::101
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: blue
+ state: overridden
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ overridden['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - overridden['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - overridden['after'] == result['after']
+
+ - name: Override device configuration of all VTEP interfaces with provided configuration (idempotent)
+ register: result
+ cisco.ios.ios_vxlan_vtep: *id001
+ - name: Assert that task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/parsed.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/parsed.yaml
new file mode 100644
index 000000000..82d84b037
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/parsed.yaml
@@ -0,0 +1,19 @@
+---
+- ansible.builtin.debug:
+ msg: START Parsed ios_vxlan_vtep state for integration tests on connection={{ ansible_connection }}
+
+- block:
+ - name: Ios_vxlan_vtep parsed - play
+ register: result
+ cisco.ios.ios_vxlan_vtep:
+ running_config: "{{ lookup('file', '_parsed.cfg') }}"
+ state: parsed
+
+ - name: Ios_vxlan_vtep parsed - assert config
+ ansible.builtin.assert:
+ that:
+ - result.changed == false
+ - parsed['config'] == result['parsed']
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/rendered.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/rendered.yaml
new file mode 100644
index 000000000..9979d6f30
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/rendered.yaml
@@ -0,0 +1,34 @@
+---
+- ansible.builtin.debug:
+ msg: START Rendered ios_vxlan_vtep state for integration tests on connection={{ ansible_connection }}
+
+- block:
+ - name: Ios_vxlan_vtep rendered - play
+ register: result
+ cisco.ios.ios_vxlan_vtep: &id001
+ config:
+ - interface: nve1
+ source_interface: Loopback1
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::101
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: blue
+ state: rendered
+
+ - name: Ios_vxlan_vtep rendered - assert commands
+ ansible.builtin.assert:
+ that:
+ - "{{ rendered['commands'] | symmetric_difference(result['rendered']) | length == 0 }}"
+ - result['changed'] == false
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/replaced.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/replaced.yaml
new file mode 100644
index 000000000..5e24f4336
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/tests/cli/replaced.yaml
@@ -0,0 +1,56 @@
+---
+- ansible.builtin.debug:
+ msg: START Replaced ios_vxlan_vtep state for integration tests on connection={{ ansible_connection }}
+
+- ansible.builtin.include_tasks: _remove_config.yaml
+- ansible.builtin.include_tasks: _populate_vlan_vrf_config.yaml
+- ansible.builtin.include_tasks: _populate_config.yaml
+
+- block:
+ - name: Replaces device configuration of listed VTEP interfaces with provided configuration
+ register: result
+ cisco.ios.ios_vxlan_vtep: &id001
+ config:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::101
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::102
+ state: replaced
+
+ - name: Assert that correct set of commands were generated
+ ansible.builtin.assert:
+ that:
+ - "{{ replaced['commands'] | symmetric_difference(result['commands']) | length == 0 }}"
+
+ - name: Assert that before dicts are correctly generated
+ ansible.builtin.assert:
+ that:
+ - replaced['before'] == result['before']
+
+ - name: Assert that after dict is correctly generated
+ ansible.builtin.assert:
+ that:
+ - replaced['after'] == result['after']
+
+ - name: Replaces device configuration of listed VTEP interfaces with provided configuration (idempotent)
+ register: result
+ cisco.ios.ios_vxlan_vtep: *id001
+ - name: Assert that task was idempotent
+ ansible.builtin.assert:
+ that:
+ - result['changed'] == false
+
+ always:
+ - ansible.builtin.include_tasks: _remove_config.yaml
diff --git a/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/vars/main.yaml b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/vars/main.yaml
new file mode 100644
index 000000000..9ee70d3f7
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/integration/targets/ios_vxlan_vtep/vars/main.yaml
@@ -0,0 +1,274 @@
+---
+merged:
+ before:
+ - interface: nve1
+ commands:
+ - interface nve1
+ - source-interface Loopback1
+ - host-reachability protocol bgp
+ - member vni 10101 ingress-replication
+ - member vni 10102 ingress-replication
+ - member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ - member vni 10202 mcast-group 225.0.0.102 FF0E:225::102
+ - member vni 50901 vrf green
+ - member vni 50902 vrf blue
+ after:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: ingress
+ - vni: 10102
+ replication:
+ type: ingress
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.101
+ ipv6: FF0E:225::101
+ - vni: 10202
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.102
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: green
+ - vni: 50902
+ vrf: blue
+replaced:
+ before:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: ingress
+ - vni: 10102
+ replication:
+ type: ingress
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.101
+ ipv6: FF0E:225::101
+ - vni: 10202
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.102
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: green
+ - vni: 50902
+ vrf: blue
+ commands:
+ - interface nve1
+ - no member vni 10101 ingress-replication
+ - member vni 10101 mcast-group FF0E:225::101
+ - no member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ - member vni 10201 mcast-group FF0E:225::102
+ - no member vni 10102 ingress-replication
+ - no member vni 10202 mcast-group 225.0.0.102 FF0E:225::102
+ - no member vni 50901 vrf green
+ - no member vni 50902 vrf blue
+ after:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::101
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::102
+
+overridden:
+ before:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: ingress
+ - vni: 10102
+ replication:
+ type: ingress
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.101
+ ipv6: FF0E:225::101
+ - vni: 10202
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.102
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: green
+ - vni: 50902
+ vrf: blue
+ commands:
+ - interface nve1
+ - no member vni 10101 ingress-replication
+ - member vni 10101 mcast-group FF0E:225::101
+ - no member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ - member vni 10201 mcast-group FF0E:225::102
+ - no member vni 10102 ingress-replication
+ - no member vni 10202 mcast-group 225.0.0.102 FF0E:225::102
+ - no member vni 50901 vrf green
+ - no member vni 50902 vrf blue
+ - member vni 50901 vrf blue
+ after:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::101
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: blue
+
+deleted:
+ before:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: ingress
+ - vni: 10102
+ replication:
+ type: ingress
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.101
+ ipv6: FF0E:225::101
+ - vni: 10202
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.102
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: green
+ - vni: 50902
+ vrf: blue
+ commands:
+ - interface nve1
+ - no source-interface Loopback1
+ - no host-reachability protocol bgp
+ - no member vni 10101 ingress-replication
+ - no member vni 10102 ingress-replication
+ - no member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ - no member vni 10202 mcast-group 225.0.0.102 FF0E:225::102
+ - no member vni 50901 vrf green
+ - no member vni 50902 vrf blue
+
+ after:
+ - interface: nve1
+ host_reachability_bgp: true
+
+gathered:
+ config:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: ingress
+ - vni: 10102
+ replication:
+ type: ingress
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.101
+ ipv6: FF0E:225::101
+ - vni: 10202
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.102
+ ipv6: FF0E:225::102
+ l3vni:
+ - vni: 50901
+ vrf: green
+ - vni: 50902
+ vrf: blue
+
+parsed:
+ config:
+ - interface: nve1
+ source_interface: Loopback1
+ host_reachability_bgp: true
+ member:
+ vni:
+ l2vni:
+ - vni: 10101
+ replication:
+ type: ingress
+ - vni: 10201
+ replication:
+ type: static
+ mcast_group:
+ ipv4: 225.0.0.101
+ ipv6: FF0E:225::101
+ l3vni:
+ - vni: 50901
+ vrf: green
+ - vni: 50902
+ vrf: blue
+
+rendered:
+ commands:
+ - interface nve1
+ - source-interface Loopback1
+ - member vni 10101 mcast-group FF0E:225::101
+ - member vni 10201 mcast-group FF0E:225::102
+ - member vni 50901 vrf blue
diff --git a/ansible_collections/cisco/ios/tests/sanity/ignore-2.10.txt b/ansible_collections/cisco/ios/tests/sanity/ignore-2.10.txt
index 64ccd8a88..9dadf1b54 100644
--- a/ansible_collections/cisco/ios/tests/sanity/ignore-2.10.txt
+++ b/ansible_collections/cisco/ios/tests/sanity/ignore-2.10.txt
@@ -19,3 +19,6 @@ plugins/module_utils/network/ios/config/route_maps/route_maps.py import-2.6!skip
plugins/module_utils/network/ios/config/logging_global/logging_global.py import-2.6!skip
plugins/module_utils/network/ios/config/prefix_lists/prefix_lists.py import-2.6!skip
plugins/module_utils/network/ios/config/ntp_global/ntp_global.py import-2.6!skip
+plugins/module_utils/network/ios/config/vxlan_vtep/vxlan_vtep.py import-2.6!skip
+plugins/module_utils/network/ios/config/evpn_global/evpn_global.py import-2.6!skip
+plugins/module_utils/network/ios/config/evpn_evi/evpn_evi.py import-2.6!skip
diff --git a/ansible_collections/cisco/ios/tests/sanity/ignore-2.11.txt b/ansible_collections/cisco/ios/tests/sanity/ignore-2.11.txt
index ed36434e4..2847c9344 100644
--- a/ansible_collections/cisco/ios/tests/sanity/ignore-2.11.txt
+++ b/ansible_collections/cisco/ios/tests/sanity/ignore-2.11.txt
@@ -19,3 +19,6 @@ plugins/module_utils/network/ios/config/route_maps/route_maps.py import-2.6!skip
plugins/module_utils/network/ios/config/logging_global/logging_global.py import-2.6!skip
plugins/module_utils/network/ios/config/prefix_lists/prefix_lists.py import-2.6!skip
plugins/module_utils/network/ios/config/ntp_global/ntp_global.py import-2.6!skip
+plugins/module_utils/network/ios/config/vxlan_vtep/vxlan_vtep.py import-2.6!skip
+plugins/module_utils/network/ios/config/evpn_global/evpn_global.py import-2.6!skip
+plugins/module_utils/network/ios/config/evpn_evi/evpn_evi.py import-2.6!skip
diff --git a/ansible_collections/cisco/ios/tests/sanity/ignore-2.17.txt b/ansible_collections/cisco/ios/tests/sanity/ignore-2.17.txt
new file mode 100644
index 000000000..d7ff17ca8
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/sanity/ignore-2.17.txt
@@ -0,0 +1 @@
+plugins/action/ios.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
diff --git a/ansible_collections/cisco/ios/tests/sanity/ignore-2.9.txt b/ansible_collections/cisco/ios/tests/sanity/ignore-2.9.txt
index df15af536..11aba94e9 100644
--- a/ansible_collections/cisco/ios/tests/sanity/ignore-2.9.txt
+++ b/ansible_collections/cisco/ios/tests/sanity/ignore-2.9.txt
@@ -2,8 +2,6 @@ plugins/modules/ios_bgp.py validate-modules:deprecation-mismatch
plugins/modules/ios_bgp.py validate-modules:invalid-documentation
plugins/modules/ios_lldp.py validate-modules:deprecation-mismatch
plugins/modules/ios_lldp.py validate-modules:invalid-documentation
-plugins/modules/ios_logging.py validate-modules:deprecation-mismatch
-plugins/modules/ios_logging.py validate-modules:invalid-documentation
plugins/modules/ios_ntp.py validate-modules:deprecation-mismatch
plugins/modules/ios_ntp.py validate-modules:invalid-documentation
plugins/modules/ios_linkagg.py validate-modules:deprecation-mismatch
@@ -29,3 +27,6 @@ plugins/module_utils/network/ios/config/route_maps/route_maps.py import-2.6!skip
plugins/module_utils/network/ios/config/logging_global/logging_global.py import-2.6!skip
plugins/module_utils/network/ios/config/prefix_lists/prefix_lists.py import-2.6!skip
plugins/module_utils/network/ios/config/ntp_global/ntp_global.py import-2.6!skip
+plugins/module_utils/network/ios/config/vxlan_vtep/vxlan_vtep.py import-2.6!skip
+plugins/module_utils/network/ios/config/evpn_global/evpn_global.py import-2.6!skip
+plugins/module_utils/network/ios/config/evpn_evi/evpn_evi.py import-2.6!skip
diff --git a/ansible_collections/cisco/ios/tests/unit/mock/loader.py b/ansible_collections/cisco/ios/tests/unit/mock/loader.py
index ebff16f63..0fc53edcd 100644
--- a/ansible_collections/cisco/ios/tests/unit/mock/loader.py
+++ b/ansible_collections/cisco/ios/tests/unit/mock/loader.py
@@ -31,7 +31,7 @@ from ansible.parsing.dataloader import DataLoader
class DictDataLoader(DataLoader):
def __init__(self, file_mapping=None):
file_mapping = {} if file_mapping is None else file_mapping
- assert type(file_mapping) == dict
+ assert isinstance(file_mapping, dict)
super(DictDataLoader, self).__init__()
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_dir b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_dir
index 3adc44adb..b5b36f4f3 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_dir
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_dir
@@ -1,23 +1,29 @@
Directory of bootflash:/
- 11 drwx 16384 Jun 1 2017 13:03:27 +00:00 lost+found
-325121 drwx 4096 Jun 1 2017 13:03:54 +00:00 .super.iso.dir
- 12 -rw- 31 Jun 22 2018 15:17:06 +00:00 .CsrLxc_LastInstall
- 13 -rw- 69 Jun 1 2017 13:05:53 +00:00 virtual-instance.conf
-438913 drwx 4096 Jun 1 2017 13:04:57 +00:00 core
- 15 -rw- 125736960 Jun 1 2017 13:03:54 +00:00 iosxe-remote-mgmt.16.03.04.ova
-105667 -rw- 292164568 Jun 1 2017 13:04:04 +00:00 csr1000v-mono-universalk9.16.03.04.SPA.pkg
-105668 -rw- 34370768 Jun 1 2017 13:04:10 +00:00 csr1000v-rpboot.16.03.04.SPA.pkg
-105666 -rw- 5317 Jun 1 2017 13:04:10 +00:00 packages.conf
-195073 drwx 4096 Jun 1 2017 13:04:51 +00:00 .prst_sync
-414529 drwx 4096 Jun 1 2017 13:04:57 +00:00 .rollback_timer
- 16 -rw- 0 Jun 1 2017 13:05:00 +00:00 tracelogs.kZn
-16257 drwx 24576 Jun 22 2018 16:03:11 +00:00 tracelogs
-349505 drwx 4096 Jun 1 2017 13:05:08 +00:00 .installer
-292609 drwx 4096 Jun 1 2017 13:05:59 +00:00 virtual-instance
- 17 -rw- 30 Jun 22 2018 15:17:59 +00:00 throughput_monitor_params
-48769 drwx 4096 Jun 1 2017 13:06:04 +00:00 onep
- 19 -rw- 376 Jun 22 2018 15:18:11 +00:00 csrlxc-cfg.log
- 20 -rw- 0 Jun 22 2018 15:17:59 +00:00 cvac.log
-
-7897796608 bytes total (6608056320 bytes free)
+131075 drwx 24576 Jun 25 2023 13:10:37 +00:00 tracelogs
+131078 drwx 4096 Feb 21 2023 12:23:20 +00:00 .installer
+17 -rw- 509 Feb 21 2023 12:20:00 +00:00 cvac.log
+131124 drwx 4096 Feb 21 2023 12:19:59 +00:00 license_evlog
+
+
+5183766528 bytes total (4009947136 bytes free)
+
+Directory of flash:/
+
+131075 drwx 24576 Jun 25 2023 13:10:37 +00:00 tracelogs
+131078 drwx 4096 Feb 21 2023 12:23:20 +00:00 .installer
+17 -rw- 509 Feb 21 2023 12:20:00 +00:00 cvac.log
+131124 drwx 4096 Feb 21 2023 12:19:59 +00:00 license_evlog
+
+
+4183766528 bytes total (4009947136 bytes free)
+
+Directory of flash1:/
+
+131075 drwx 24576 Jun 25 2023 13:10:37 +00:00 tracelogs
+131078 drwx 4096 Feb 21 2023 12:23:20 +00:00 .installer
+17 -rw- 509 Feb 21 2023 12:20:00 +00:00 cvac.log
+131124 drwx 4096 Feb 21 2023 12:19:59 +00:00 license_evlog
+
+
+6183766528 bytes total (4009921136 bytes free)
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_processes_cpu b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_processes_cpu
new file mode 100644
index 000000000..7aec22810
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_processes_cpu
@@ -0,0 +1,4 @@
+CPU utilization for five seconds: 3%/2%; one minute: 1%; five minutes: 5%
+ PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
+Core 0: CPU utilization for five seconds: 4%; one minute: 0%; five minutes: 3%
+Core 1: CPU utilization for five seconds: 5%; one minute: 5%; five minutes: 3%
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acl_interfaces.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acl_interfaces.py
index 5d97c5890..6bc99691c 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acl_interfaces.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acl_interfaces.py
@@ -23,33 +23,12 @@ class TestIosAclInterfacesModule(TestIosModule):
def setUp(self):
super(TestIosAclInterfacesModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.acl_interfaces.acl_interfaces."
"Acl_interfacesFacts.get_acl_interfaces_data",
@@ -58,19 +37,9 @@ class TestIosAclInterfacesModule(TestIosModule):
def tearDown(self):
super(TestIosAclInterfacesModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
- # def load_fixtures(self, commands=None):
- # def load_from_file(*args, **kwargs):
- # return load_fixture("ios_acl_interfaces.cfg")
-
- # self.execute_show_command.side_effect = load_from_file
-
def test_ios_acl_interfaces_merged(self):
self.execute_show_command.return_value = dedent(
"""\
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acls.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acls.py
index e383080f6..33c4a1ddb 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acls.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acls.py
@@ -23,62 +23,48 @@ class TestIosAclsModule(TestIosModule):
def setUp(self):
super(TestIosAclsModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.acls.acls."
"AclsFacts.get_acl_data",
)
self.execute_show_command = self.mock_execute_show_command.start()
+ self.mock_execute_show_command_name_specific = patch(
+ "ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.acls.acls."
+ "AclsFacts.get_acl_names",
+ )
+ self.execute_show_command_name = self.mock_execute_show_command_name_specific.start()
def tearDown(self):
super(TestIosAclsModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
+ self.mock_execute_show_command_name_specific.stop()
def test_ios_acls_merged(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
- Extended IP access list 110
+ ip access-list extended 110
10 permit tcp 198.51.100.0 0.0.0.255 any eq 22 log (tag = testLog)
20 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10
30 deny icmp object-group test_network_og any dscp ef ttl eq 10
- IPv6 access list R1_TRAFFIC
- deny tcp any eq www any eq telnet ack dscp af11 sequence 10
- Extended IP access list test_pre
+ ipv6 access-list R1_TRAFFIC
+ sequence 10 deny tcp any eq www any eq telnet ack dscp af11
+ ip access-list extended test_pre
10 permit ip any any precedence internet
""",
)
+ self.execute_show_command_name.return_value = dedent(
+ """\
+ Standard IP access list test_acl
+ """,
+ )
+
set_module_args(
dict(
config=[
@@ -148,7 +134,7 @@ class TestIosAclsModule(TestIosModule):
),
dict(
grant="deny",
- protocol_options=dict(tcp=dict(ack="true")),
+ protocol_options=dict(tcp=dict(ack="True")),
sequence="200",
source=dict(object_group="test_network_og"),
destination=dict(object_group="test_network_og"),
@@ -178,18 +164,339 @@ class TestIosAclsModule(TestIosModule):
]
self.assertEqual(sorted(result["commands"]), sorted(commands))
- def test_ios_acls_merged_idempotent(self):
+ def test_ios_acls_merged_remarks_positional(self):
self.execute_show_command.return_value = dedent(
"""\
+ """,
+ )
+ self.execute_show_command_name.return_value = dedent(
+ """\
Standard IP access list test_acl
- Extended IP access list 110
+ """,
+ )
+
+ set_module_args(
+ dict(
+ config=[
+ {
+ "acls": [
+ {
+ "aces": [
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "ip",
+ "sequence": 10,
+ "source": {
+ "address": "10.40.150.0",
+ "wildcard_bits": "0.0.0.255",
+ },
+ },
+ {
+ "destination": {
+ "address": "10.40.150.0",
+ "wildcard_bits": "0.0.0.255",
+ },
+ "grant": "permit",
+ "protocol": "ip",
+ "sequence": 20,
+ "source": {"any": True},
+ },
+ ],
+ "acl_type": "extended",
+ "name": "199",
+ },
+ {
+ "aces": [
+ {
+ "grant": "permit",
+ "sequence": 10,
+ "source": {
+ "address": "10.182.250.0",
+ "wildcard_bits": "0.0.0.255",
+ },
+ },
+ ],
+ "acl_type": "standard",
+ "name": "42",
+ },
+ {
+ "aces": [
+ {
+ "destination": {"any": True, "port_protocol": {"eq": "22"}},
+ "grant": "permit",
+ "protocol": "tcp",
+ "sequence": 10,
+ "source": {
+ "address": "10.57.66.243",
+ "wildcard_bits": "0.0.0.7",
+ },
+ },
+ {
+ "destination": {"any": True, "port_protocol": {"eq": "22"}},
+ "grant": "permit",
+ "protocol": "tcp",
+ "sequence": 20,
+ "source": {"host": "10.160.114.111"},
+ },
+ {
+ "destination": {"any": True, "port_protocol": {"eq": "22"}},
+ "grant": "permit",
+ "protocol": "tcp",
+ "sequence": 30,
+ "source": {"host": "10.160.115.22"},
+ },
+ {
+ "destination": {"any": True},
+ "grant": "deny",
+ "log": {"set": True},
+ "protocol": "ip",
+ "sequence": 40,
+ "source": {"any": True},
+ },
+ ],
+ "acl_type": "extended",
+ "name": "NET-MGMT-VTY",
+ },
+ {
+ "aces": [
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "ip",
+ "remarks": [
+ "FIRST REMARK BEFORE LINE 10",
+ "============",
+ "ALLOW HOST FROM BUILDING 10",
+ ],
+ "sequence": 10,
+ "source": {"host": "1.1.1.1"},
+ },
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "ip",
+ "remarks": [
+ "FIRST REMARK BEFORE LINE 20",
+ "============",
+ "ALLOW HOST FROM BUILDING 20",
+ ],
+ "sequence": 20,
+ "source": {"host": "2.2.2.2"},
+ },
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "ip",
+ "remarks": [
+ "FIRST REMARK BEFORE LINE 30",
+ "============",
+ "ALLOW NEW HOST FROM BUILDING 10",
+ ],
+ "sequence": 30,
+ "source": {"host": "3.3.3.3"},
+ },
+ {
+ "remarks": [
+ "FIRST REMARK AT END OF ACL",
+ "SECOND REMARK AT END OF ACL",
+ ],
+ },
+ ],
+ "acl_type": "extended",
+ "name": "TEST",
+ },
+ {
+ "aces": [
+ {
+ "remarks": [
+ "empty remark 1",
+ "empty remark 2",
+ "empty remark never ends",
+ ],
+ },
+ ],
+ "acl_type": "extended",
+ "name": "empty_ip_ex_acl",
+ },
+ {
+ "aces": [
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "ip",
+ "remarks": [
+ "I am a test ace",
+ "I am right after the test ace",
+ "I third the test ace",
+ ],
+ "sequence": 100,
+ "source": {"host": "100.100.100.100"},
+ },
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "ip",
+ "remarks": [
+ "I am the next test ace",
+ "I am the next ace to the next ace",
+ ],
+ "sequence": 110,
+ "source": {"host": "10.40.150.0"},
+ },
+ {"remarks": ["I am the peace ace", "Peace out"]},
+ ],
+ "acl_type": "extended",
+ "name": "mytest",
+ },
+ ],
+ "afi": "ipv4",
+ },
+ {
+ "acls": [
+ {
+ "aces": [
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "ipv6",
+ "sequence": 10,
+ "source": {"address": "2001:ABAD:BEEF:1221::/64"},
+ },
+ {
+ "destination": {
+ "host": "2001:ABAD:BEEF:1212::1",
+ "port_protocol": {"eq": "www"},
+ },
+ "grant": "deny",
+ "protocol": "tcp",
+ "sequence": 20,
+ "source": {"host": "2001:ABAD:BEEF:2345::1"},
+ },
+ ],
+ "name": "R1_TRAFFIC",
+ },
+ {
+ "aces": [
+ {"remarks": ["empty remark 1"], "sequence": 10},
+ {"remarks": ["empty remark 2"], "sequence": 20},
+ {"remarks": ["empty remark never ends"], "sequence": 30},
+ ],
+ "name": "empty_ipv6_acl",
+ },
+ {
+ "aces": [
+ {"remarks": ["I am a ipv6 ace"], "sequence": 10},
+ {"remarks": ["I am test"], "sequence": 20},
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "tcp",
+ "sequence": 30,
+ "source": {"any": True},
+ },
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "udp",
+ "sequence": 40,
+ "source": {"any": True},
+ },
+ {"remarks": ["I am new set of ipv6 ace"], "sequence": 50},
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol": "icmp",
+ "sequence": 60,
+ "source": {"any": True},
+ },
+ ],
+ "name": "ipv6_acl",
+ },
+ ],
+ "afi": "ipv6",
+ },
+ ],
+ state="merged",
+ ),
+ )
+ result = self.execute_module(changed=True)
+ commands = [
+ "ip access-list extended mytest",
+ "remark I am a test ace",
+ "remark I am right after the test ace",
+ "remark I third the test ace",
+ "100 permit ip host 100.100.100.100 any",
+ "remark I am the next test ace",
+ "remark I am the next ace to the next ace",
+ "110 permit ip host 10.40.150.0 any",
+ "remark I am the peace ace",
+ "remark Peace out",
+ "ip access-list extended 199",
+ "10 permit ip 10.40.150.0 0.0.0.255 any",
+ "20 permit ip any 10.40.150.0 0.0.0.255",
+ "ip access-list extended NET-MGMT-VTY",
+ "10 permit tcp 10.57.66.243 0.0.0.7 any eq 22",
+ "20 permit tcp host 10.160.114.111 any eq 22",
+ "30 permit tcp host 10.160.115.22 any eq 22",
+ "40 deny ip any any log",
+ "ip access-list extended empty_ip_ex_acl",
+ "remark empty remark 1",
+ "remark empty remark 2",
+ "remark empty remark never ends",
+ "ip access-list extended TEST",
+ "remark FIRST REMARK BEFORE LINE 10",
+ "remark ============",
+ "remark ALLOW HOST FROM BUILDING 10",
+ "10 permit ip host 1.1.1.1 any",
+ "remark FIRST REMARK BEFORE LINE 20",
+ "remark ============",
+ "remark ALLOW HOST FROM BUILDING 20",
+ "20 permit ip host 2.2.2.2 any",
+ "remark FIRST REMARK BEFORE LINE 30",
+ "remark ============",
+ "remark ALLOW NEW HOST FROM BUILDING 10",
+ "30 permit ip host 3.3.3.3 any",
+ "remark FIRST REMARK AT END OF ACL",
+ "remark SECOND REMARK AT END OF ACL",
+ "ip access-list standard 42",
+ "10 permit 10.182.250.0 0.0.0.255",
+ "ipv6 access-list R1_TRAFFIC",
+ "permit ipv6 2001:ABAD:BEEF:1221::/64 any sequence 10",
+ "deny tcp host 2001:ABAD:BEEF:2345::1 host 2001:ABAD:BEEF:1212::1 eq www sequence 20",
+ "ipv6 access-list empty_ipv6_acl",
+ "remark empty remark 1",
+ " sequence 10",
+ "remark empty remark 2",
+ " sequence 20",
+ "remark empty remark never ends",
+ " sequence 30",
+ "ipv6 access-list ipv6_acl",
+ "remark I am a ipv6 ace",
+ " sequence 10",
+ "remark I am test",
+ " sequence 20",
+ "permit tcp any any sequence 30",
+ "permit udp any any sequence 40",
+ "remark I am new set of ipv6 ace",
+ " sequence 50",
+ "permit icmp any any sequence 60",
+ ]
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_acls_merged_idempotent(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ ip access-list standard test_acl
+ ip access-list extended 110
10 permit tcp 198.51.100.0 0.0.0.255 any eq 22 log (tag = testLog)
20 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 dscp ef ttl eq 10
30 deny icmp object-group test_network_og any dscp ef ttl eq 10
- IPv6 access list R1_TRAFFIC
- deny tcp any eq www any eq telnet ack dscp af11 sequence 10
+ ipv6 access-list R1_TRAFFIC
+ sequence 10 deny tcp any eq www any eq telnet ack dscp af11
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
@@ -234,19 +541,22 @@ class TestIosAclsModule(TestIosModule):
def test_ios_acls_replaced(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
- Extended IP access list 110
+ ip access-list extended 110
10 permit tcp 198.51.100.0 0.0.0.255 any eq 22 log (tag = testLog)
20 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10
30 deny icmp object-group test_network_og any dscp ef ttl eq 10
- IPv6 access list R1_TRAFFIC
- deny tcp any eq www any eq telnet ack dscp af11 sequence 10
+ ipv6 access-list R1_TRAFFIC
+ sequence 10 deny tcp any eq www any eq telnet ack dscp af11
ip access-list standard test_acl
remark remark check 1
remark some random remark 2
""",
)
-
+ self.execute_show_command_name.return_value = dedent(
+ """\
+ Standard IP access list test_acl
+ """,
+ )
set_module_args(
dict(
config=[
@@ -259,7 +569,7 @@ class TestIosAclsModule(TestIosModule):
aces=[
dict(
grant="deny",
- protocol_options=dict(tcp=dict(ack="true")),
+ protocol_options=dict(tcp=dict(ack="True")),
source=dict(
address="198.51.100.0",
wildcard_bits="0.0.0.255",
@@ -289,26 +599,30 @@ class TestIosAclsModule(TestIosModule):
"ip access-list extended replace_acl",
"deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos min-monetary-cost",
"ip access-list standard test_acl",
- "remark Another remark here",
"no remark remark check 1",
"no remark some random remark 2",
+ "remark Another remark here",
]
self.assertEqual(sorted(result["commands"]), sorted(commands))
def test_ios_acls_replaced_idempotent(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
- Extended IP access list 110
+ ip access-list standard test_acl
+ ip access-list extended 110
10 permit tcp 198.51.100.0 0.0.0.255 any eq 22 log (tag = testLog)
20 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10
30 deny icmp object-group test_network_og any dscp ef ttl eq 10
- IPv6 access list R1_TRAFFIC
- deny tcp any eq www any eq telnet ack dscp af11 sequence 10
- Extended IP access list test_pre
+ ipv6 access-list R1_TRAFFIC
+ sequence 10 deny tcp any eq www any eq telnet ack dscp af11
+ ip access-list extended test_pre
10 permit ip any any precedence internet
+ ip access-list extended test-idem
+ 10 permit ip host 10.153.14.21 any
+ 20 permit ip host 10.153.14.22 any
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
config=[
@@ -328,7 +642,7 @@ class TestIosAclsModule(TestIosModule):
"wildcard_bits": "0.0.0.255",
},
"destination": {"any": True, "port_protocol": {"eq": "22"}},
- "log": {"user_cookie": "testLog"},
+ "log": {"set": True, "user_cookie": "testLog"},
},
{
"sequence": 20,
@@ -359,6 +673,26 @@ class TestIosAclsModule(TestIosModule):
},
{"name": "test_acl", "acl_type": "standard"},
{
+ "aces": [
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol_options": {"ip": True},
+ "sequence": 10,
+ "source": {"host": "10.153.14.21"},
+ },
+ {
+ "destination": {"any": True},
+ "grant": "permit",
+ "protocol_options": {"ip": True},
+ "sequence": 20,
+ "source": {"host": "10.153.14.22"},
+ },
+ ],
+ "acl_type": "extended",
+ "name": "test-idem",
+ },
+ {
"name": "test_pre",
"acl_type": "extended",
"aces": [
@@ -406,15 +740,16 @@ class TestIosAclsModule(TestIosModule):
def test_ios_acls_overridden(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
- Extended IP access list 110
+ ip access-list standard test_acl
+ ip access-list extended 110
10 permit tcp 198.51.100.0 0.0.0.255 any eq 22 log (tag = testLog)
20 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10
30 deny icmp object-group test_network_og any dscp ef ttl eq 10
- IPv6 access list R1_TRAFFIC
- deny tcp any eq www any eq telnet ack dscp af11 sequence 10
+ ipv6 access-list R1_TRAFFIC
+ sequence 10 deny tcp any eq www any eq telnet ack dscp af11
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
config=[
@@ -426,7 +761,7 @@ class TestIosAclsModule(TestIosModule):
aces=[
dict(
grant="deny",
- protocol_options=dict(tcp=dict(syn="true")),
+ protocol_options=dict(tcp=dict(syn="True")),
source=dict(
address="198.51.100.0",
wildcard_bits="0.0.0.255",
@@ -461,17 +796,21 @@ class TestIosAclsModule(TestIosModule):
def test_ios_acls_overridden_idempotent(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
- Extended IP access list 110
+ ip access-list extended 110
10 permit tcp 198.51.100.0 0.0.0.255 any eq 22 log (tag = testLog)
20 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10
30 deny icmp object-group test_network_og any dscp ef ttl eq 10
- Reflexive IP access list MIRROR
+ ip access-list reflexive MIRROR
permit tcp host 0.0.0.0 eq 22 host 192.168.0.1 eq 50200 (2 matches) (time left 123)
permit tcp host 0.0.0.0 eq 22 host 192.168.0.1 eq 50201 (2 matches) (time left 345)
permit tcp host 0.0.0.0 eq 22 host 192.168.0.1 eq 50202 (2 matches) (time left 678)
- IPv6 access list R1_TRAFFIC
- deny tcp any eq www any eq telnet ack dscp af11 sequence 10
+ ipv6 access-list R1_TRAFFIC
+ sequence 10 deny tcp any eq www any eq telnet ack dscp af11
+ """,
+ )
+ self.execute_show_command_name.return_value = dedent(
+ """\
+ Standard IP access list test_acl
""",
)
set_module_args(
@@ -493,7 +832,7 @@ class TestIosAclsModule(TestIosModule):
"wildcard_bits": "0.0.0.255",
},
"destination": {"any": True, "port_protocol": {"eq": "22"}},
- "log": {"user_cookie": "testLog"},
+ "log": {"set": True, "user_cookie": "testLog"},
},
{
"sequence": 20,
@@ -558,15 +897,16 @@ class TestIosAclsModule(TestIosModule):
def test_ios_acls_deleted_afi_based(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
- Extended IP access list 110
+ ip access-list standard test_acl
+ ip access-list extended 110
10 permit tcp 198.51.100.0 0.0.0.255 any eq 22 log (tag = testLog)
20 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10
30 deny icmp object-group test_network_og any dscp ef ttl eq 10
- IPv6 access list R1_TRAFFIC
- deny tcp any eq www any eq telnet ack dscp af11 sequence 10
+ ipv6 access-list R1_TRAFFIC
+ sequence 10 deny tcp any eq www any eq telnet ack dscp af11
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(dict(config=[dict(afi="ipv4")], state="deleted"))
result = self.execute_module(changed=True)
commands = ["no ip access-list extended 110", "no ip access-list standard test_acl"]
@@ -575,15 +915,16 @@ class TestIosAclsModule(TestIosModule):
def test_ios_acls_deleted_acl_based(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
- Extended IP access list 110
+ ip access-list standard test_acl
+ ip access-list extended 110
10 permit tcp 198.51.100.0 0.0.0.255 any eq 22 log (tag = testLog)
20 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10
30 deny icmp object-group test_network_og any dscp ef ttl eq 10
- IPv6 access list R1_TRAFFIC
- deny tcp any eq www any eq telnet ack dscp af11 sequence 10
+ ipv6 access-list R1_TRAFFIC
+ sequence 10 deny tcp any eq www any eq telnet ack dscp af11
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
config=[
@@ -595,7 +936,7 @@ class TestIosAclsModule(TestIosModule):
aces=[
dict(
grant="deny",
- protocol_options=dict(icmp=dict(echo="true")),
+ protocol_options=dict(icmp=dict(echo="True")),
sequence="10",
source=dict(address="192.0.2.0", wildcard_bits="0.0.0.255"),
destination=dict(
@@ -617,11 +958,11 @@ class TestIosAclsModule(TestIosModule):
aces=[
dict(
grant="deny",
- protocol_options=dict(tcp=dict(ack="true")),
+ protocol_options=dict(tcp=dict(ack="True")),
sequence="10",
- source=dict(any="true", port_protocol=dict(eq="www")),
+ source=dict(any="True", port_protocol=dict(eq="www")),
destination=dict(
- any="true",
+ any="True",
port_protocol=dict(eq="telnet"),
),
dscp="af11",
@@ -639,6 +980,7 @@ class TestIosAclsModule(TestIosModule):
self.assertEqual(sorted(result["commands"]), sorted(commands))
def test_ios_acls_rendered(self):
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
config=[
@@ -653,7 +995,7 @@ class TestIosAclsModule(TestIosModule):
grant="deny",
sequence="10",
remarks=["check for remark", "remark for acl 110"],
- protocol_options=dict(tcp=dict(syn="true")),
+ protocol_options=dict(tcp=dict(syn="True")),
source=dict(address="192.0.2.0", wildcard_bits="0.0.0.255"),
destination=dict(
address="192.0.3.0",
@@ -681,9 +1023,10 @@ class TestIosAclsModule(TestIosModule):
self.assertEqual(sorted(result["rendered"]), sorted(commands))
def test_ios_acls_parsed(self):
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
- running_config="""IPv6 access list R1_TRAFFIC\n deny tcp any eq www any range 10 20 ack dscp af11 sequence 10
+ running_config="""ipv6 access-list R1_TRAFFIC\n sequence 10 deny tcp any eq www any range 10 20 ack dscp af11
20 permit icmp host 192.0.2.1 host 192.0.2.2 echo\n 30 permit icmp host 192.0.2.3 host 192.0.2.4 echo-reply""",
state="parsed",
),
@@ -732,9 +1075,10 @@ class TestIosAclsModule(TestIosModule):
self.assertEqual(parsed_list, result["parsed"])
def test_ios_acls_parsed_matches(self):
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
- running_config="""Standard IP access list R1_TRAFFIC\n10 permit 10.11.12.13 (2 matches)\n
+ running_config="""ip access-list standard R1_TRAFFIC\n10 permit 10.11.12.13 (2 matches)\n
40 permit 128.0.0.0, wildcard bits 63.255.255.255 (2 matches)\n60 permit 134.107.136.0, wildcard bits 0.0.0.255 (1 match)""",
state="parsed",
),
@@ -752,18 +1096,12 @@ class TestIosAclsModule(TestIosModule):
{
"sequence": 40,
"grant": "permit",
- "source": {
- "address": "128.0.0.0",
- "wildcard_bits": "63.255.255.255",
- },
+ "protocol_options": {"protocol_number": 128},
},
{
- "grant": "permit",
"sequence": 60,
- "source": {
- "address": "134.107.136.0",
- "wildcard_bits": "0.0.0.255",
- },
+ "grant": "permit",
+ "protocol_options": {"protocol_number": 134},
},
],
},
@@ -775,15 +1113,16 @@ class TestIosAclsModule(TestIosModule):
def test_ios_acls_overridden_remark(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
- Extended IP access list 110
+ ip access-list standard test_acl
+ ip access-list extended 110
10 permit tcp 198.51.100.0 0.0.0.255 any eq 22 log (tag = testLog)
20 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10
30 deny icmp object-group test_network_og any dscp ef ttl eq 10
- access-list 110 remark test ab.
- access-list 110 remark test again ab.
+ remark test ab.
+ remark test again ab.
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
config=[
@@ -814,12 +1153,12 @@ class TestIosAclsModule(TestIosModule):
def test_ios_acls_overridden_option(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
ip access-list standard test_acl
remark remark check 1
remark some random remark 2
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
@@ -833,7 +1172,7 @@ class TestIosAclsModule(TestIosModule):
aces=[
dict(
grant="deny",
- protocol_options=dict(tcp=dict(ack="true")),
+ protocol_options=dict(tcp=dict(ack="True")),
source=dict(
address="198.51.100.0",
wildcard_bits="0.0.0.255",
@@ -918,6 +1257,7 @@ class TestIosAclsModule(TestIosModule):
"""\
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
@@ -983,12 +1323,13 @@ class TestIosAclsModule(TestIosModule):
def test_ios_delete_acl(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list 2
+ ip access-list standard 2
30 permit 172.16.1.11
20 permit 172.16.1.10 log
10 permit 172.16.1.2
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
config=[
@@ -1019,12 +1360,13 @@ class TestIosAclsModule(TestIosModule):
def test_ios_failed_extra_param_standard_acl(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
+ ip access-list standard test_acl
ip access-list standard test_acl
remark remark check 1
remark some random remark 2
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
@@ -1059,12 +1401,13 @@ class TestIosAclsModule(TestIosModule):
def test_ios_failed_update_with_merged(self):
self.execute_show_command.return_value = dedent(
"""\
- Standard IP access list test_acl
+ ip access-list standard test_acl
30 permit 172.16.1.11
20 permit 172.16.1.10 log
10 permit 172.16.1.2
""",
)
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
config=[
@@ -1098,15 +1441,16 @@ class TestIosAclsModule(TestIosModule):
)
def test_ios_acls_parsed_multioption(self):
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
running_config=dedent(
"""\
- Standard IP access list 2
+ ip access-list standard 2
30 permit 172.16.1.11
20 permit 172.16.1.10
10 permit 172.16.1.2
- Extended IP access list 101
+ ip access-list extended 101
15 permit tcp any host 172.16.2.9
18 permit tcp any host 172.16.2.11
20 permit udp host 172.16.1.21 any
@@ -1115,17 +1459,13 @@ class TestIosAclsModule(TestIosModule):
50 permit ip any 10.1.1.0 0.0.0.255
60 permit tcp any host 10.1.1.1 eq telnet
70 permit tcp 10.1.1.0 0.0.0.255 172.16.1.0 0.0.0.255 eq telnet time-range EVERYOTHERDAY (active)
- Extended IP access list outboundfilters
+ ip access-list extended outboundfilters
10 permit icmp 10.1.1.0 0.0.0.255 172.16.1.0 0.0.0.255
- Extended IP access list test
+ ip access-list extended test
10 permit ip host 10.2.2.2 host 10.3.3.3
20 permit tcp host 10.1.1.1 host 10.5.5.5 eq www
30 permit icmp any any
40 permit udp host 10.6.6.6 10.10.10.0 0.0.0.255 eq domain
- Extended MAC access list system-cpp-bpdu-range
- permit any 0180.c200.0000 0000.0000.0003
- Extended MAC access list system-cpp-cdp
- permit any host 0100.0ccc.cccc
""",
),
state="parsed",
@@ -1282,6 +1622,7 @@ class TestIosAclsModule(TestIosModule):
self.assertEqual(parsed_list, result["parsed"])
def test_ios_acls_rendered_muiltioption(self):
+ self.execute_show_command_name.return_value = dedent("")
set_module_args(
dict(
config=[
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_address_family.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_address_family.py
index 3bd293925..259da5ece 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_address_family.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_address_family.py
@@ -23,33 +23,12 @@ class TestIosBgpAddressFamilyModule(TestIosModule):
def setUp(self):
super(TestIosBgpAddressFamilyModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.bgp_address_family.bgp_address_family."
"Bgp_address_familyFacts.get_bgp_address_family_data",
@@ -58,11 +37,7 @@ class TestIosBgpAddressFamilyModule(TestIosModule):
def tearDown(self):
super(TestIosBgpAddressFamilyModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_bgp_address_family_merged(self):
@@ -143,7 +118,7 @@ class TestIosBgpAddressFamilyModule(TestIosModule):
neighbors=[
dict(
neighbor_address="198.51.100.1",
- remote_as=65100,
+ remote_as="65.11",
route_maps=[dict(name="test-route-out", out="true")],
prefix_lists=[dict(name="AS65100-PREFIX-OUT", out="true")],
),
@@ -169,7 +144,7 @@ class TestIosBgpAddressFamilyModule(TestIosModule):
"bgp aggregate-timer 20",
"bgp dmzlink-bw",
"bgp scan-time 10",
- "neighbor 198.51.100.1 remote-as 65100",
+ "neighbor 198.51.100.1 remote-as 65.11",
"neighbor 198.51.100.1 route-map test-route-out out",
"network 192.0.1.1 route-map test_route",
"default-metric 10",
@@ -253,7 +228,7 @@ class TestIosBgpAddressFamilyModule(TestIosModule):
network 198.51.110.10 mask 255.255.255.255 backdoor
aggregate-address 192.0.2.1 255.255.255.255 as-confed-set
neighbor 198.51.100.1 remote-as 10
- neighbor 198.51.100.1 local-as 20
+ neighbor 198.51.100.1 local-as 10.64760
neighbor 198.51.100.1 activate
neighbor 198.51.100.1 next-hop-self all
neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive
@@ -346,7 +321,7 @@ class TestIosBgpAddressFamilyModule(TestIosModule):
},
},
},
- "local_as": {"number": 20, "set": True},
+ "local_as": {"number": "10.64760", "set": True},
"neighbor_address": "198.51.100.1",
"nexthop_self": {"all": True},
"prefix_lists": [{"name": "AS65100-PREFIX-OUT", "out": True}],
@@ -796,7 +771,7 @@ class TestIosBgpAddressFamilyModule(TestIosModule):
),
)
- result = self.execute_module(changed=False, commands=[])
+ self.execute_module(changed=False, commands=[])
def test_ios_bgp_address_family_deleted(self):
self.execute_show_command.return_value = dedent(
@@ -1188,8 +1163,8 @@ class TestIosBgpAddressFamilyModule(TestIosModule):
],
"neighbors": [
{
- "remote_as": 10,
- "local_as": {"set": True, "number": 20},
+ "remote_as": "10",
+ "local_as": {"set": True, "number": "20"},
"activate": True,
"neighbor_address": "198.51.100.1",
"nexthop_self": {"all": True},
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_global.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_global.py
index 35fe1dd2d..95aa8d8e9 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_global.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_global.py
@@ -23,33 +23,12 @@ class TestIosBgpGlobalModule(TestIosModule):
def setUp(self):
super(TestIosBgpGlobalModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.bgp_global.bgp_global."
"Bgp_globalFacts.get_bgp_global_data",
@@ -58,11 +37,7 @@ class TestIosBgpGlobalModule(TestIosModule):
def tearDown(self):
super(TestIosBgpGlobalModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_bgp_global_merged(self):
@@ -343,7 +318,6 @@ class TestIosBgpGlobalModule(TestIosModule):
state="merged",
),
)
- # self.assertEqual(sorted(result["commands"]), sorted(commands))
with self.assertRaises(AnsibleFailJson) as error:
self.execute_module(changed=False, commands=[])
self.assertIn(
@@ -351,6 +325,62 @@ class TestIosBgpGlobalModule(TestIosModule):
str(error.exception),
)
+ def test_ios_bgp_global_overridden(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ router bgp 65000
+ bgp nopeerup-delay post-boot 10
+ bgp bestpath compare-routerid
+ bgp advertise-best-external
+ aggregate-address 192.168.0.11 255.255.0.0 attribute-map map1
+ timers bgp 100 200 150
+ redistribute connected metric 10
+ neighbor 192.0.2.2 remote-as 100
+ neighbor 192.0.2.2 route-map test-route out
+ address-family ipv4
+ neighbor 192.0.2.28 activate
+ neighbor 172.31.35.140 activate
+ """,
+ )
+ set_module_args(
+ dict(
+ config=dict(
+ as_number="65000",
+ aggregate_address=dict(
+ dict(address="192.168.0.11", attribute_map="map1", netmask="255.255.0.0"),
+ ),
+ aggregate_addresses=[
+ dict(address="192.168.0.1", attribute_map="map", netmask="255.255.0.0"),
+ dict(address="192.168.0.2", attribute_map="map2", netmask="255.255.0.0"),
+ ],
+ bgp=dict(
+ advertise_best_external=True,
+ bestpath_options=dict(compare_routerid=True),
+ log_neighbor_changes=True,
+ nopeerup_delay_options=dict(cold_boot=20, post_boot=10),
+ ),
+ redistribute=[dict(connected=dict(set=True, metric=10))],
+ neighbors=[
+ dict(address="192.0.2.1", remote_as=200, description="replace neighbor"),
+ ],
+ ),
+ state="overridden",
+ ),
+ )
+ commands = [
+ "router bgp 65000",
+ "no timers bgp 100 200 150",
+ "bgp log-neighbor-changes",
+ "bgp nopeerup-delay cold-boot 20",
+ "aggregate-address 192.168.0.1 255.255.0.0 attribute-map map",
+ "aggregate-address 192.168.0.2 255.255.0.0 attribute-map map2",
+ "neighbor 192.0.2.1 remote-as 200",
+ "neighbor 192.0.2.1 description replace neighbor",
+ "no neighbor 192.0.2.2",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
def test_ios_bgp_global_replaced(self):
self.execute_show_command.return_value = dedent(
"""\
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_config.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_config.py
index fb8188b41..778bb1ccb 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_config.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_config.py
@@ -200,6 +200,15 @@ class TestIosConfigModule(TestIosModule):
commands = parents + lines
self.execute_module(changed=True, commands=commands)
+ def test_ios_config_replace_block_src(self):
+ src = load_fixture("ios_config_src.cfg")
+ set_module_args(dict(src=src, replace="block"))
+ self.conn.get_diff = MagicMock(
+ return_value=self.cliconf_obj.get_diff(src, self.running_config),
+ )
+ commands = ["hostname foo", "interface GigabitEthernet0/0", "no ip address"]
+ self.execute_module(changed=True, commands=commands)
+
def test_ios_config_match_none(self):
lines = ["hostname router"]
set_module_args(dict(lines=lines, match="none"))
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_evpn_evi.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_evpn_evi.py
new file mode 100644
index 000000000..94008b0aa
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_evpn_evi.py
@@ -0,0 +1,418 @@
+#
+# (c) 2021, 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 textwrap import dedent
+
+from ansible_collections.cisco.ios.plugins.modules import ios_evpn_evi
+from ansible_collections.cisco.ios.tests.unit.compat.mock import patch
+from ansible_collections.cisco.ios.tests.unit.modules.utils import set_module_args
+
+from .ios_module import TestIosModule
+
+
+class TestIosEvpnEviModule(TestIosModule):
+ module = ios_evpn_evi
+
+ def setUp(self):
+ super(TestIosEvpnEviModule, self).setUp()
+
+ self.mock_get_resource_connection_facts = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
+ "get_resource_connection",
+ )
+ self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
+
+ self.mock_execute_show_command = patch(
+ "ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.evpn_evi.evpn_evi."
+ "Evpn_eviFacts.get_evpn_evi_data",
+ )
+ self.execute_show_command = self.mock_execute_show_command.start()
+
+ def tearDown(self):
+ super(TestIosEvpnEviModule, self).tearDown()
+ self.mock_get_resource_connection_facts.stop()
+ self.mock_execute_show_command.stop()
+
+ def test_ios_evpn_evi_merged(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn instance 101 vlan-based
+ encapsulation vxlan
+ replication-type static
+ !
+ l2vpn evpn instance 102 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ !
+ l2vpn evpn instance 201 vlan-based
+ encapsulation vxlan
+ replication-type static
+ !
+ l2vpn evpn instance 202 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "evi": "101",
+ "replication_type": "ingress",
+ "route_distinguisher": "1:1",
+ "default_gateway": {
+ "advertise": {"enable": False},
+ },
+ "ip": {
+ "local_learning": {"enable": True},
+ },
+ },
+ {
+ "evi": "202",
+ "replication_type": "static",
+ "default_gateway": {
+ "advertise": {"enable": True},
+ },
+ "ip": {
+ "local_learning": {"disable": True},
+ },
+ },
+ ],
+ state="merged",
+ ),
+ )
+ commands = [
+ "l2vpn evpn instance 101 vlan-based",
+ "ip local-learning enable",
+ "replication-type ingress",
+ "rd 1:1",
+ "l2vpn evpn instance 202 vlan-based",
+ "default-gateway advertise enable",
+ "ip local-learning disable",
+ "replication-type static",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_evi_merged_idempotent(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn instance 101 vlan-based
+ encapsulation vxlan
+ rd 1:1
+ replication-type ingress
+ ip local-learning enable
+ !
+ l2vpn evpn instance 102 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ !
+ l2vpn evpn instance 201 vlan-based
+ encapsulation vxlan
+ replication-type static
+ !
+ l2vpn evpn instance 202 vlan-based
+ encapsulation vxlan
+ replication-type static
+ ip local-learning disable
+ default-gateway advertise enable
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "evi": "101",
+ "replication_type": "ingress",
+ "route_distinguisher": "1:1",
+ "default_gateway": {
+ "advertise": {"enable": False},
+ },
+ "ip": {
+ "local_learning": {"enable": True},
+ },
+ },
+ {
+ "evi": "202",
+ "replication_type": "static",
+ "default_gateway": {
+ "advertise": {"enable": True},
+ },
+ "ip": {
+ "local_learning": {"disable": True},
+ },
+ },
+ ],
+ state="merged",
+ ),
+ )
+ commands = []
+ result = self.execute_module(changed=False)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_evi_deleted_evi(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn instance 101 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ default-gateway advertise enable
+ l2vpn evpn instance 102 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ l2vpn evpn instance 202 vlan-based
+ encapsulation vxlan
+ replication-type static
+ default-gateway advertise enable
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "evi": "101",
+ },
+ ],
+ state="deleted",
+ ),
+ )
+ commands = [
+ "no l2vpn evpn instance 101 vlan-based",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_ospf_interfaces_deleted_all(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn instance 101 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ default-gateway advertise enable
+ l2vpn evpn instance 102 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ l2vpn evpn instance 202 vlan-based
+ encapsulation vxlan
+ replication-type static
+ default-gateway advertise enable
+ """,
+ )
+ set_module_args(dict(config=[], state="deleted"))
+ commands = [
+ "no l2vpn evpn instance 101 vlan-based",
+ "no l2vpn evpn instance 102 vlan-based",
+ "no l2vpn evpn instance 202 vlan-based",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_evi_deleted_blank(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ """,
+ )
+ set_module_args(dict(config=list(), state="deleted"))
+ commands = []
+ result = self.execute_module(changed=False)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_evi_replaced(self):
+ """both the replaced and overridden states are supported to have same behaviour"""
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn instance 101 vlan-based
+ encapsulation vxlan
+ rd 1:1
+ replication-type ingress
+ ip local-learning enable
+ !
+ l2vpn evpn instance 102 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ !
+ l2vpn evpn instance 201 vlan-based
+ encapsulation vxlan
+ replication-type static
+ !
+ l2vpn evpn instance 202 vlan-based
+ encapsulation vxlan
+ replication-type static
+ ip local-learning disable
+ default-gateway advertise enable
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "evi": "101",
+ "replication_type": "ingress",
+ "default_gateway": {
+ "advertise": {"enable": True},
+ },
+ },
+ {
+ "evi": "202",
+ "replication_type": "ingress",
+ },
+ ],
+ state="replaced",
+ ),
+ )
+ commands = [
+ "l2vpn evpn instance 101 vlan-based",
+ "default-gateway advertise enable",
+ "no ip local-learning enable",
+ "no rd 1:1",
+ "l2vpn evpn instance 202 vlan-based",
+ "no default-gateway advertise enable",
+ "no ip local-learning disable",
+ "replication-type ingress",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_evi_replaced_idempotent(self):
+ """both the replaced and overridden states are supported to have same behaviour"""
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn instance 101 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ default-gateway advertise enable
+ !
+ l2vpn evpn instance 102 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ !
+ l2vpn evpn instance 201 vlan-based
+ encapsulation vxlan
+ replication-type static
+ !
+ l2vpn evpn instance 202 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "evi": "101",
+ "replication_type": "ingress",
+ "default_gateway": {
+ "advertise": {"enable": True},
+ },
+ },
+ {
+ "evi": "202",
+ "replication_type": "ingress",
+ },
+ ],
+ state="replaced",
+ ),
+ )
+ commands = []
+ result = self.execute_module(changed=False)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_evi_overridden(self):
+ """both the replaced and overridden states are supported to have same behaviour"""
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn instance 101 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ default-gateway advertise enable
+ !
+ l2vpn evpn instance 102 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ !
+ l2vpn evpn instance 201 vlan-based
+ encapsulation vxlan
+ replication-type static
+ !
+ l2vpn evpn instance 202 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "evi": "101",
+ "replication_type": "ingress",
+ "default_gateway": {
+ "advertise": {"enable": True},
+ },
+ },
+ {
+ "evi": "202",
+ "replication_type": "static",
+ "default_gateway": {
+ "advertise": {"enable": True},
+ },
+ },
+ ],
+ state="overridden",
+ ),
+ )
+ commands = [
+ "no l2vpn evpn instance 102 vlan-based",
+ "no l2vpn evpn instance 201 vlan-based",
+ "l2vpn evpn instance 202 vlan-based",
+ "default-gateway advertise enable",
+ "replication-type static",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_evi_overridden_idempotent(self):
+ """both the replaced and overridden states are supported to have same behaviour"""
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn instance 101 vlan-based
+ encapsulation vxlan
+ replication-type ingress
+ default-gateway advertise enable
+ !
+ l2vpn evpn instance 202 vlan-based
+ encapsulation vxlan
+ replication-type static
+ default-gateway advertise enable
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "evi": "101",
+ "replication_type": "ingress",
+ "default_gateway": {
+ "advertise": {"enable": True},
+ },
+ },
+ {
+ "evi": "202",
+ "replication_type": "static",
+ "default_gateway": {
+ "advertise": {"enable": True},
+ },
+ },
+ ],
+ state="overridden",
+ ),
+ )
+ commands = []
+ result = self.execute_module(changed=False)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_evpn_global.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_evpn_global.py
new file mode 100644
index 000000000..d3bfa1585
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_evpn_global.py
@@ -0,0 +1,185 @@
+#
+# (c) 2023 Red Hat
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+from textwrap import dedent
+
+from ansible_collections.cisco.ios.plugins.modules import ios_evpn_global
+from ansible_collections.cisco.ios.tests.unit.compat.mock import patch
+from ansible_collections.cisco.ios.tests.unit.modules.utils import set_module_args
+
+from .ios_module import TestIosModule
+
+
+class TestIosEvpnGlobalModule(TestIosModule):
+ module = ios_evpn_global
+
+ def setUp(self):
+ super(TestIosEvpnGlobalModule, self).setUp()
+
+ self.mock_get_resource_connection_facts = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
+ "get_resource_connection",
+ )
+ self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
+
+ self.mock_execute_show_command = patch(
+ "ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.evpn_global.evpn_global."
+ "Evpn_globalFacts.get_evpn_global_data",
+ )
+ self.execute_show_command = self.mock_execute_show_command.start()
+
+ def tearDown(self):
+ super(TestIosEvpnGlobalModule, self).tearDown()
+ self.mock_get_resource_connection_facts.stop()
+ self.mock_execute_show_command.stop()
+
+ def test_ios_evpn_global_merged(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn
+ replication-type static
+ router-id Loopback1
+ default-gateway advertise
+ """,
+ )
+ set_module_args(
+ dict(
+ config=dict(
+ replication_type="ingress",
+ route_target=dict(auto=dict(vni=True)),
+ default_gateway=dict(advertise=False),
+ ip=dict(local_learning=dict(disable=True)),
+ flooding_suppression=dict(address_resolution=dict(disable=False)),
+ ),
+ state="merged",
+ ),
+ )
+ commands = [
+ "l2vpn evpn",
+ "no default-gateway advertise",
+ "replication-type ingress",
+ "route-target auto vni",
+ "ip local-learning disable",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_global_merged_idempotent(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn
+ replication-type ingress
+ router-id Loopback1
+ ip local-learning disable
+ route-target auto vni
+ """,
+ )
+ set_module_args(
+ dict(
+ config=dict(
+ replication_type="ingress",
+ route_target=dict(auto=dict(vni=True)),
+ default_gateway=dict(advertise=False),
+ ip=dict(local_learning=dict(disable=True)),
+ flooding_suppression=dict(address_resolution=dict(disable=False)),
+ ),
+ state="merged",
+ ),
+ )
+ commands = []
+ result = self.execute_module(changed=False)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_global_deleted(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn
+ replication-type static
+ flooding-suppression address-resolution disable
+ router-id Loopback2
+ default-gateway advertise
+ """,
+ )
+ set_module_args(dict(config=dict(), state="deleted"))
+ commands = [
+ "no l2vpn evpn",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_global_deleted_blank(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ """,
+ )
+ set_module_args(dict(config=dict(), state="deleted"))
+ commands = []
+ result = self.execute_module(changed=False)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_global_replaced_overridden(self):
+ """both the replaced and overridden states are supported to have same behaviour"""
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn
+ replication-type ingress
+ router-id Loopback1
+ ip local-learning disable
+ route-target auto vni
+ """,
+ )
+ set_module_args(
+ dict(
+ config=dict(
+ replication_type="static",
+ router_id="Loopback2",
+ default_gateway=dict(advertise=True),
+ flooding_suppression=dict(address_resolution=dict(disable=True)),
+ ),
+ state="replaced",
+ ),
+ )
+ commands = [
+ "l2vpn evpn",
+ "default-gateway advertise",
+ "flooding-suppression address-resolution disable",
+ "no ip local-learning disable",
+ "replication-type static",
+ "no route-target auto vni",
+ "router-id Loopback2",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
+
+ def test_ios_evpn_global_replaced_overridden_idempotent(self):
+ """both the replaced and overridden states are supported to have same behaviour"""
+ self.execute_show_command.return_value = dedent(
+ """\
+ l2vpn evpn
+ replication-type static
+ flooding-suppression address-resolution disable
+ router-id Loopback2
+ default-gateway advertise
+ """,
+ )
+ set_module_args(
+ dict(
+ config=dict(
+ replication_type="static",
+ router_id="Loopback2",
+ default_gateway=dict(advertise=True),
+ flooding_suppression=dict(address_resolution=dict(disable=True)),
+ ),
+ state="overridden",
+ ),
+ )
+ commands = []
+ result = self.execute_module(changed=False)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_facts.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_facts.py
index 09dd1a899..a99d7f011 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_facts.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_facts.py
@@ -119,13 +119,29 @@ class TestIosFactsModule(TestIosModule):
def test_ios_facts_filesystems_info(self):
set_module_args(dict(gather_subset="hardware"))
result = self.execute_module()
+ cpu_utilization_data = {
+ "core": {
+ "five_seconds": 3,
+ "one_minute": 1,
+ "five_minutes": 5,
+ "five_seconds_interrupt": 2,
+ },
+ "core_0": {"five_seconds": 4, "one_minute": 0, "five_minutes": 3},
+ "core_1": {"five_seconds": 5, "one_minute": 5, "five_minutes": 3},
+ }
+ net_filesystem_data = {
+ "bootflash:": {"spacetotal_kb": 5062272.0, "spacefree_kb": 3915964.0},
+ "flash:": {"spacetotal_kb": 4085709.5, "spacefree_kb": 3915964.0},
+ "flash1:": {"spacetotal_kb": 6038834.5, "spacefree_kb": 3915938.609375},
+ }
+
self.assertEqual(
- result["ansible_facts"]["ansible_net_filesystems_info"]["bootflash:"]["spacetotal_kb"],
- 7712692.0,
+ result["ansible_facts"]["ansible_net_filesystems_info"],
+ net_filesystem_data,
)
self.assertEqual(
- result["ansible_facts"]["ansible_net_filesystems_info"]["bootflash:"]["spacefree_kb"],
- 6453180.0,
+ result["ansible_facts"]["ansible_net_cpu_utilization"],
+ cpu_utilization_data,
)
def test_ios_facts_memory_info(self):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_hostname.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_hostname.py
index 858ad343d..6b16bddf0 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_hostname.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_hostname.py
@@ -23,33 +23,12 @@ class TestIosHostnameModule(TestIosModule):
def setUp(self):
super(TestIosHostnameModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.hostname.hostname."
"HostnameFacts.get_hostname_data",
@@ -58,11 +37,7 @@ class TestIosHostnameModule(TestIosModule):
def tearDown(self):
super(TestIosHostnameModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_hostname_merged_idempotent(self):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_interfaces.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_interfaces.py
index 368067b4b..caac40ccb 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_interfaces.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_interfaces.py
@@ -23,33 +23,12 @@ class TestIosInterfacesModule(TestIosModule):
def setUp(self):
super(TestIosInterfacesModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.interfaces.interfaces."
"InterfacesFacts.get_interfaces_data",
@@ -58,11 +37,7 @@ class TestIosInterfacesModule(TestIosModule):
def tearDown(self):
super(TestIosInterfacesModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_interfaces_merged(self):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l2_interfaces.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l2_interfaces.py
index 47bcced6e..d9ec2b189 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l2_interfaces.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l2_interfaces.py
@@ -23,33 +23,12 @@ class TestIosL2InterfacesModule(TestIosModule):
def setUp(self):
super(TestIosL2InterfacesModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.l2_interfaces.l2_interfaces."
"L2_interfacesFacts.get_l2_interfaces_data",
@@ -58,11 +37,7 @@ class TestIosL2InterfacesModule(TestIosModule):
def tearDown(self):
super(TestIosL2InterfacesModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_l2_interfaces_merged(self):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l3_interfaces.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l3_interfaces.py
index e020f4fdd..de9442b59 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l3_interfaces.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l3_interfaces.py
@@ -23,33 +23,12 @@ class TestIosL3InterfacesModule(TestIosModule):
def setUp(self):
super(TestIosL3InterfacesModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.l3_interfaces.l3_interfaces."
"L3_InterfacesFacts.get_l3_interfaces_data",
@@ -58,11 +37,7 @@ class TestIosL3InterfacesModule(TestIosModule):
def tearDown(self):
super(TestIosL3InterfacesModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_l3_interfaces_merged_common_ip(self):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp.py
index a5b46c916..6c56406e6 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp.py
@@ -111,6 +111,22 @@ class TestIosLacpModule(TestIosModule):
result = self.execute_module(changed=True)
self.assertEqual(result["commands"], commands)
+ def test_ios_lacp_overridden(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 123, 5e00.0000.8000
+ """,
+ )
+ set_module_args(
+ dict(
+ config={"system": {"priority": 12300}},
+ state="overridden",
+ ),
+ )
+ commands = ["lacp system-priority 12300"]
+ result = self.execute_module(changed=True)
+ self.assertEqual(result["commands"], commands)
+
def test_ios_lacp_deleted(self):
self.execute_show_command.return_value = dedent(
"""\
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp_interfaces.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp_interfaces.py
index 2be548564..f58aa9d65 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp_interfaces.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lacp_interfaces.py
@@ -49,7 +49,6 @@ class TestIosLacpInterfaceModule(TestIosModule):
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
)
self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.lacp_interfaces.lacp_interfaces."
"Lacp_InterfacesFacts.get_lacp_interface_data",
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lag_interfaces.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lag_interfaces.py
index 74301348d..1f97bef24 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lag_interfaces.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lag_interfaces.py
@@ -23,33 +23,12 @@ class TestIosLagInterfacesModule(TestIosModule):
def setUp(self):
super(TestIosLagInterfacesModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.lag_interfaces.lag_interfaces."
"Lag_interfacesFacts.get_lag_interfaces_data",
@@ -58,11 +37,7 @@ class TestIosLagInterfacesModule(TestIosModule):
def tearDown(self):
super(TestIosLagInterfacesModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_lag_interfaces_merged(self):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lldp_global.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lldp_global.py
index dd67f0608..4c54ef5c9 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lldp_global.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_lldp_global.py
@@ -120,6 +120,25 @@ class TestIosLldpGlobalModule(TestIosModule):
result = self.execute_module(changed=True)
self.assertEqual(result["commands"], commands)
+ def test_ios_lldp_global_overridden(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ lldp timer 10
+ lldp holdtime 10
+ lldp reinit 3
+ lldp run
+ """,
+ )
+ set_module_args(
+ dict(
+ config={"timer": 15, "reinit": 9},
+ state="overridden",
+ ),
+ )
+ commands = ["no lldp holdtime", "no lldp run", "lldp timer 15", "lldp reinit 9"]
+ result = self.execute_module(changed=True)
+ self.assertEqual(result["commands"], commands)
+
def test_ios_lldp_global_deleted(self):
self.execute_show_command.return_value = dedent(
"""\
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging.py
deleted file mode 100644
index 26278952a..000000000
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging.py
+++ /dev/null
@@ -1,153 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-# (c) 2017 Paul Neumann
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import absolute_import, division, print_function
-
-
-__metaclass__ = type
-
-from ansible_collections.cisco.ios.plugins.modules import ios_logging
-from ansible_collections.cisco.ios.tests.unit.compat.mock import patch
-from ansible_collections.cisco.ios.tests.unit.modules.utils import set_module_args
-
-from .ios_module import TestIosModule, load_fixture
-
-
-class TestIosLoggingModule(TestIosModule):
- module = ios_logging
-
- def setUp(self):
- super(TestIosLoggingModule, self).setUp()
-
- self.mock_get_config = patch(
- "ansible_collections.cisco.ios.plugins.modules.ios_logging.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.cisco.ios.plugins.modules.ios_logging.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_capabilities = patch(
- "ansible_collections.cisco.ios.plugins.modules.ios_logging.get_capabilities",
- )
- self.get_capabilities = self.mock_get_capabilities.start()
- self.get_capabilities.return_value = {"device_info": {"network_os_version": "15.6(2)T"}}
-
- def tearDown(self):
- super(TestIosLoggingModule, self).tearDown()
-
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_get_capabilities.stop()
-
- def load_fixtures(self, commands=None):
- self.get_config.return_value = load_fixture("ios_logging_config.cfg")
- self.load_config.return_value = None
-
- def test_ios_logging_buffer_size_changed_implicit(self):
- set_module_args(dict(dest="buffered"))
- commands = ["logging buffered 4096"]
- self.execute_module(changed=True, commands=commands)
-
- def test_ios_logging_buffer_size_changed_explicit(self):
- set_module_args(dict(dest="buffered", size=6000))
- commands = ["logging buffered 6000"]
- self.execute_module(changed=True, commands=commands)
-
- def test_ios_logging_add_host(self):
- set_module_args(dict(dest="host", name="192.168.1.1"))
- commands = ["logging host 192.168.1.1"]
- self.execute_module(changed=True, commands=commands)
-
- def test_ios_logging_host_idempotent(self):
- set_module_args(dict(dest="host", name="2.3.4.5"))
- commands = []
- self.execute_module(changed=False, commands=commands)
-
- def test_ios_logging_delete_non_exist_host(self):
- set_module_args(dict(dest="host", name="192.168.1.1", state="absent"))
- commands = []
- self.execute_module(changed=False, commands=commands)
-
- def test_ios_logging_delete_host(self):
- set_module_args(dict(dest="host", name="2.3.4.5", state="absent"))
- commands = ["no logging host 2.3.4.5"]
- self.execute_module(changed=True, commands=commands)
-
- def test_ios_logging_configure_disabled_monitor_destination(self):
- set_module_args(dict(dest="monitor", level="debugging"))
- commands = ["logging monitor debugging"]
- self.execute_module(changed=True, commands=commands)
-
-
-class TestIosLoggingModuleIOS12(TestIosModule):
- module = ios_logging
-
- def setUp(self):
- super(TestIosLoggingModuleIOS12, self).setUp()
-
- self.mock_get_config = patch(
- "ansible_collections.cisco.ios.plugins.modules.ios_logging.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.cisco.ios.plugins.modules.ios_logging.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_capabilities = patch(
- "ansible_collections.cisco.ios.plugins.modules.ios_logging.get_capabilities",
- )
- self.get_capabilities = self.mock_get_capabilities.start()
- self.get_capabilities.return_value = {"device_info": {"network_os_version": "12.1(2)T"}}
-
- def tearDown(self):
- super(TestIosLoggingModuleIOS12, self).tearDown()
-
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_get_capabilities.stop()
-
- def load_fixtures(self, commands=None):
- self.get_config.return_value = load_fixture("ios_logging_config_ios12.cfg")
- self.load_config.return_value = None
-
- def test_ios_logging_add_host(self):
- set_module_args(dict(dest="host", name="192.168.1.1"))
- commands = ["logging 192.168.1.1"]
- self.execute_module(changed=True, commands=commands)
-
- def test_ios_logging_host_idempotent(self):
- set_module_args(dict(dest="host", name="2.3.4.5"))
- commands = []
- self.execute_module(changed=False, commands=commands)
-
- def test_ios_logging_delete_non_exist_host(self):
- set_module_args(dict(dest="host", name="192.168.1.1", state="absent"))
- commands = []
- self.execute_module(changed=False, commands=commands)
-
- def test_ios_logging_delete_host(self):
- set_module_args(dict(dest="host", name="2.3.4.5", state="absent"))
- commands = ["no logging 2.3.4.5"]
- self.execute_module(changed=True, commands=commands)
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging_global.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging_global.py
index 6520ebc7a..c3024636a 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging_global.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging_global.py
@@ -23,33 +23,12 @@ class TestIosLoggingGlobalModule(TestIosModule):
def setUp(self):
super(TestIosLoggingGlobalModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.logging_global.logging_global."
"Logging_globalFacts.get_logging_data",
@@ -58,11 +37,7 @@ class TestIosLoggingGlobalModule(TestIosModule):
def tearDown(self):
super(TestIosLoggingGlobalModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_logging_global_merged_idempotent(self):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ntp_global.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ntp_global.py
index d80b568f4..a9d0392c1 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ntp_global.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ntp_global.py
@@ -23,33 +23,12 @@ class TestIosNtpGlobalModule(TestIosModule):
def setUp(self):
super(TestIosNtpGlobalModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.ntp_global.ntp_global."
"Ntp_globalFacts.get_ntp_data",
@@ -58,11 +37,7 @@ class TestIosNtpGlobalModule(TestIosModule):
def tearDown(self):
super(TestIosNtpGlobalModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_ntp_global_merged_idempotent(self):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospf_interfaces.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospf_interfaces.py
index fe16e7a18..3721ba3ba 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospf_interfaces.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospf_interfaces.py
@@ -23,33 +23,12 @@ class TestIosOspfInterfacesModule(TestIosModule):
def setUp(self):
super(TestIosOspfInterfacesModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.ospf_interfaces.ospf_interfaces."
"Ospf_interfacesFacts.get_ospf_interfaces_data",
@@ -58,11 +37,7 @@ class TestIosOspfInterfacesModule(TestIosModule):
def tearDown(self):
super(TestIosOspfInterfacesModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_ospf_interfaces_merged(self):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv2.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv2.py
index ba6283f4c..b73e34395 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv2.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv2.py
@@ -8,11 +8,13 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
+from textwrap import dedent
+
from ansible_collections.cisco.ios.plugins.modules import ios_ospfv2
from ansible_collections.cisco.ios.tests.unit.compat.mock import patch
from ansible_collections.cisco.ios.tests.unit.modules.utils import set_module_args
-from .ios_module import TestIosModule, load_fixture
+from .ios_module import TestIosModule
class TestIosOspfV2Module(TestIosModule):
@@ -21,33 +23,12 @@ class TestIosOspfV2Module(TestIosModule):
def setUp(self):
super(TestIosOspfV2Module, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.ospfv2.ospfv2."
"Ospfv2Facts.get_ospfv2_data",
@@ -56,20 +37,24 @@ class TestIosOspfV2Module(TestIosModule):
def tearDown(self):
super(TestIosOspfV2Module, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- return load_fixture("ios_ospfv2.cfg")
-
- self.execute_show_command.side_effect = load_from_file
-
def test_ios_ospfv2_merged(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
set_module_args(
dict(
config=dict(
@@ -122,6 +107,20 @@ class TestIosOspfV2Module(TestIosModule):
self.assertEqual(sorted(result["commands"]), sorted(commands))
def test_ios_ospfv2_merged_specific_param(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
set_module_args(
dict(
config={
@@ -143,6 +142,20 @@ class TestIosOspfV2Module(TestIosModule):
self.assertEqual(sorted(result["commands"]), sorted(commands))
def test_ios_ospfv2_merged_idempotent(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
set_module_args(
dict(
config=dict(
@@ -176,25 +189,56 @@ class TestIosOspfV2Module(TestIosModule):
self.execute_module(changed=False, commands=[])
def test_ios_ospfv2_replaced(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
set_module_args(
dict(
- config=dict(
- processes=[
- dict(
- process_id="200",
- auto_cost=dict(reference_bandwidth="4"),
- domain_id=dict(ip_address=dict(address="192.0.1.1")),
- max_metric=dict(on_startup=dict(time=200), router_lsa=True),
- areas=[dict(area_id="10", capability=True)],
- vrf="blue",
- ),
+ config={
+ "processes": [
+ {
+ "process_id": "200",
+ "auto_cost": {
+ "reference_bandwidth": "4",
+ },
+ "domain_id": {
+ "ip_address": {
+ "address": "192.0.1.1",
+ },
+ },
+ "max_metric": {
+ "on_startup": {
+ "time": 200,
+ },
+ "router_lsa": True,
+ },
+ "areas": [
+ {
+ "area_id": "10",
+ "capability": True,
+ },
+ ],
+ "vrf": "blue",
+ },
],
- ),
+ },
state="replaced",
),
)
commands = [
"router ospf 200 vrf blue",
+ "auto-cost reference-bandwidth 4",
"no distribute-list 123 in",
"no distribute-list 10 out",
"domain-id 192.0.1.1",
@@ -203,73 +247,21 @@ class TestIosOspfV2Module(TestIosModule):
result = self.execute_module(changed=True)
self.assertEqual(sorted(result["commands"]), sorted(commands))
- def test_ios_ospfv2_replaced_idempotent(self):
- set_module_args(
- dict(
- config=dict(
- processes=[
- dict(
- process_id="200",
- auto_cost=dict(reference_bandwidth="4"),
- distribute_list=dict(
- acls=[
- dict(direction="out", name="10"),
- dict(direction="in", name="123"),
- ],
- ),
- domain_id=dict(ip_address=dict(address="192.0.3.1")),
- max_metric=dict(on_startup=dict(time=100), router_lsa=True),
- areas=[dict(area_id="10", capability=True)],
- passive_interfaces=dict(
- default=True,
- interface=dict(
- set_interface=False,
- name=["GigabitEthernet0/1", "GigabitEthernet0/2"],
- ),
- ),
- vrf="blue",
- ),
- ],
- ),
- state="replaced",
- ),
- )
- self.execute_module(changed=False, commands=[])
-
- def test_ios_ospfv2_overridden_idempotent(self):
- set_module_args(
- dict(
- config=dict(
- processes=[
- dict(
- process_id="200",
- auto_cost=dict(reference_bandwidth="4"),
- distribute_list=dict(
- acls=[
- dict(direction="out", name="10"),
- dict(direction="in", name="123"),
- ],
- ),
- domain_id=dict(ip_address=dict(address="192.0.3.1")),
- max_metric=dict(on_startup=dict(time=100), router_lsa=True),
- areas=[dict(area_id="10", capability=True)],
- passive_interfaces=dict(
- default=True,
- interface=dict(
- set_interface=False,
- name=["GigabitEthernet0/1", "GigabitEthernet0/2"],
- ),
- ),
- vrf="blue",
- ),
- ],
- ),
- state="overridden",
- ),
- )
- self.execute_module(changed=False, commands=[])
-
def test_ios_ospfv2_overridden(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
set_module_args(
dict(
config={
@@ -318,7 +310,6 @@ class TestIosOspfV2Module(TestIosModule):
"ranges": [
{
"address": "172.16.1.0",
- "advertise": True,
"cost": 20,
"netmask": "0.0.0.255",
"not_advertise": True,
@@ -344,14 +335,14 @@ class TestIosOspfV2Module(TestIosModule):
"bfd": True,
"capability": {
"lls": True,
- "opaque": True,
- "transit": True,
- "vrf_lite": True,
+ "opaque": False,
+ "transit": False,
+ "vrf_lite": False,
},
"compatible": {
"rfc1583": True,
- "rfc1587": True,
- "rfc5243": True,
+ "rfc1587": False,
+ "rfc5243": False,
},
"default_information": {
"always": True,
@@ -400,11 +391,9 @@ class TestIosOspfV2Module(TestIosModule):
"limit": {
"dc": {
"disable": True,
- "number": 20,
},
"non_dc": {
"disable": True,
- "number": 10,
},
},
"local_rib_criteria": {
@@ -436,7 +425,6 @@ class TestIosOspfV2Module(TestIosModule):
"area": "area1",
"set": True,
},
- "sync": True,
},
"traffic_eng": {
"area": "area12",
@@ -479,7 +467,6 @@ class TestIosOspfV2Module(TestIosModule):
"strict_lsa_checking": True,
},
},
- # "passive_interface": "GigabitEthernet0/1",
"passive_interfaces": {
"default": True,
"interface": {
@@ -493,11 +480,9 @@ class TestIosOspfV2Module(TestIosModule):
"queue_depth": {
"hello": {
"max_packets": 10,
- "unlimited": True,
},
"update": {
"max_packets": 30,
- "unlimited": True,
},
},
"router_id": "router1",
@@ -505,7 +490,6 @@ class TestIosOspfV2Module(TestIosModule):
"summary_address": {
"address": "172.16.1.0",
"mask": "0.0.0.255",
- "not_advertise": True,
"nssa_only": True,
"tag": 12,
},
@@ -513,8 +497,6 @@ class TestIosOspfV2Module(TestIosModule):
"lsa": 12,
"pacing": {
"flood": 25,
- "lsa_group": 15,
- "retransmission": 30,
},
"throttle": {
"lsa": {
@@ -542,7 +524,7 @@ class TestIosOspfV2Module(TestIosModule):
commands = [
"no router ospf 200 vrf blue",
"router ospf 1 vrf vrf1",
- "adjacency stagger none 2",
+ "adjacency stagger none 10",
"address-family ipv4 multicast",
"topology base",
"exit-address-family",
@@ -553,47 +535,71 @@ class TestIosOspfV2Module(TestIosModule):
"default-information originate always metric 25 metric-type 26 route-map rmap1",
"default-metric 50",
"discard-route external 5 internal 2",
- "domain-id 192.168.1.0 True",
+ "distance ospf inter-area 2 intra-area 3 external 1",
+ "domain-id 192.168.1.0 secondary",
"domain-tag 54",
"event-log one-shot pause size 10",
"help",
"ignore lsa mospf",
"interface-id snmp-if-index",
"ispf",
- "limit retransmissions dc 20 dc disable non-dc 10 non-dc disable",
+ "limit retransmissions dc disable non-dc disable",
"local-rib-criteria forwarding-address inter-area-summary nssa-translation",
"log-adjacency-changes detail",
- "max-lsa 10 10 ignore-count 10 ignore-time 10 reset-time 10 warning-only",
+ "max-lsa 10 10 warning-only",
"max-metric router-lsa external-lsa 10 include-stub on-startup 110 summary-lsa 20",
"maximum-paths 15",
+ "mpls ldp autoconfig area area1",
+ "mpls traffic-eng area area12",
"neighbor 172.16.1.0 cost 2 database-filter all out poll-interval 20 priority 10",
- "network 198.51.100.0 0.0.0.255 area 5",
+ "nsf cisco helper disable",
+ "nsf ietf helper disable",
+ "nsf ietf helper strict-lsa-checking",
"prefix-suppression",
"priority 10",
+ "queue-depth hello 10",
+ "queue-depth update 30",
"router-id router1",
"shutdown",
- "summary-address 172.16.1.0 0.0.0.255 not-advertise",
+ "summary-address 172.16.1.0 0.0.0.255 nssa-only tag 12",
+ "timers pacing flood 25",
"traffic-share min across-interfaces",
"ttl-security all-interfaces hops 12",
"area 5 authentication message-digest",
"area 10 authentication message-digest",
"area 10 capability default-exclusion",
"area 10 default-cost 10",
- "area 10 nssa translate type7 suppress-fa",
"area 10 nssa default-information-originate metric 10 metric-type 1 nssa-only no-ext-capability no-redistribution no-summary",
- "area 10 range 172.16.1.0 0.0.0.255 advertise cost 20",
+ "area 10 nssa translate type7 suppress-fa",
"area 10 sham-link checkSource checkDestination cost 10 ttl-security hops 20",
"area 10 stub no-ext-capability no-summary",
"area 10 filter-list prefix test_prefix_in in",
"area 10 filter-list prefix test_prefix_out out",
+ "area 10 range 172.16.1.0 0.0.0.255 not-advertise cost 20",
+ "network 198.51.100.0 0.0.0.255 area 5",
"passive-interface default",
"no passive-interface GigabitEthernet0/1",
"no passive-interface GigabitEthernet0/2",
]
result = self.execute_module(changed=True)
+ self.maxDiff = None
self.assertEqual(commands, result["commands"])
def test_ios_ospfv2_deleted(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
set_module_args(
dict(config=dict(processes=[dict(process_id="200", vrf="blue")]), state="deleted"),
)
@@ -601,6 +607,20 @@ class TestIosOspfV2Module(TestIosModule):
self.execute_module(changed=True, commands=commands)
def test_ios_ospfv2_parsed(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
set_module_args(
dict(
running_config="router ospf 1\n area 5 authentication\n area 5 capability default-exclusion",
@@ -621,6 +641,20 @@ class TestIosOspfV2Module(TestIosModule):
self.assertEqual(parsed_list, result["parsed"])
def test_ios_ospfv2_rendered(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
set_module_args(
dict(
config={
@@ -672,7 +706,6 @@ class TestIosOspfV2Module(TestIosModule):
"advertise": True,
"cost": 20,
"netmask": "0.0.0.255",
- "not_advertise": True,
},
],
"sham_link": {
@@ -695,14 +728,14 @@ class TestIosOspfV2Module(TestIosModule):
"bfd": True,
"capability": {
"lls": True,
- "opaque": True,
- "transit": True,
- "vrf_lite": True,
+ "opaque": False,
+ "transit": False,
+ "vrf_lite": False,
},
"compatible": {
"rfc1583": True,
- "rfc1587": True,
- "rfc5243": True,
+ "rfc1587": False,
+ "rfc5243": False,
},
"default_information": {
"always": True,
@@ -771,7 +804,7 @@ class TestIosOspfV2Module(TestIosModule):
"number": 10,
"reset_time": 10,
"threshold_value": 10,
- "warning_only": True,
+ "warning_only": False,
},
"max_metric": {
"external_lsa": 10,
@@ -783,10 +816,6 @@ class TestIosOspfV2Module(TestIosModule):
"maximum_paths": 15,
"mpls": {
"ldp": {
- "autoconfig": {
- "area": "area1",
- "set": True,
- },
"sync": True,
},
"traffic_eng": {
@@ -830,7 +859,6 @@ class TestIosOspfV2Module(TestIosModule):
"strict_lsa_checking": True,
},
},
- # "passive_interface": "GigabitEthernet0/1",
"passive_interfaces": {
"default": True,
"interface": {
@@ -843,11 +871,9 @@ class TestIosOspfV2Module(TestIosModule):
"process_id": 1,
"queue_depth": {
"hello": {
- "max_packets": 10,
"unlimited": True,
},
"update": {
- "max_packets": 30,
"unlimited": True,
},
},
@@ -856,15 +882,12 @@ class TestIosOspfV2Module(TestIosModule):
"summary_address": {
"address": "172.16.1.0",
"mask": "0.0.0.255",
- "not_advertise": True,
"nssa_only": True,
"tag": 12,
},
"timers": {
"lsa": 12,
"pacing": {
- "flood": 25,
- "lsa_group": 15,
"retransmission": 30,
},
"throttle": {
@@ -891,7 +914,7 @@ class TestIosOspfV2Module(TestIosModule):
)
commands = [
"address-family ipv4 multicast",
- "adjacency stagger none 2",
+ "adjacency stagger none 10",
"area 10 authentication message-digest",
"area 10 capability default-exclusion",
"area 10 default-cost 10",
@@ -910,7 +933,8 @@ class TestIosOspfV2Module(TestIosModule):
"default-information originate always metric 25 metric-type 26 route-map rmap1",
"default-metric 50",
"discard-route external 5 internal 2",
- "domain-id 192.168.1.0 True",
+ "distance ospf inter-area 2 intra-area 3 external 1",
+ "domain-id 192.168.1.0 secondary",
"domain-tag 54",
"event-log one-shot pause size 10",
"exit-address-family",
@@ -918,26 +942,218 @@ class TestIosOspfV2Module(TestIosModule):
"ignore lsa mospf",
"interface-id snmp-if-index",
"ispf",
- "limit retransmissions dc 20 dc disable non-dc 10 non-dc disable",
+ "limit retransmissions dc 20 non-dc 10",
"local-rib-criteria forwarding-address inter-area-summary nssa-translation",
"log-adjacency-changes detail",
- "max-lsa 10 10 ignore-count 10 ignore-time 10 reset-time 10 warning-only",
+ "max-lsa 10 10 ignore-count 10 ignore-time 10 reset-time 10",
"max-metric router-lsa external-lsa 10 include-stub on-startup 110 summary-lsa 20",
"maximum-paths 15",
+ "mpls ldp sync",
+ "mpls traffic-eng area area12",
"neighbor 172.16.1.0 cost 2 database-filter all out poll-interval 20 priority 10",
"network 198.51.100.0 0.0.0.255 area 5",
"no passive-interface GigabitEthernet0/1",
"no passive-interface GigabitEthernet0/2",
+ "nsf cisco helper disable",
+ "nsf ietf helper disable",
+ "nsf ietf helper strict-lsa-checking",
"passive-interface default",
"prefix-suppression",
"priority 10",
+ "queue-depth hello unlimited",
+ "queue-depth update unlimited",
"router ospf 1 vrf vrf1",
"router-id router1",
"shutdown",
- "summary-address 172.16.1.0 0.0.0.255 not-advertise",
+ "summary-address 172.16.1.0 0.0.0.255 nssa-only tag 12",
+ "timers pacing retransmission 30",
"topology base",
"traffic-share min across-interfaces",
"ttl-security all-interfaces hops 12",
]
result = self.execute_module(changed=False)
+ self.maxDiff = None
self.assertEqual(sorted(result["rendered"]), commands)
+
+ def test_ios_ospfv2_overridden_2(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ area 10 filter-list prefix test_prefix_in in
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ router ospf 210 vrf green
+ auto-cost reference-bandwidth 4
+ distribute-list 10 out
+ distribute-list 123 in
+ domain-id 192.0.3.1
+ area 10 capability default-exclusion
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
+
+ set_module_args(
+ dict(
+ config={
+ "processes": [
+ {
+ "process_id": 200,
+ "vrf": "blue",
+ "auto_cost": {"set": True, "reference_bandwidth": 4},
+ "distribute_list": {
+ "acls": [
+ {"name": "110", "direction": "out"},
+ {"name": "123", "direction": "in"},
+ ],
+ },
+ "queue_depth": {
+ "hello": {
+ "unlimited": True,
+ },
+ "update": {
+ "unlimited": True,
+ },
+ },
+ "domain_id": {"null": True},
+ "timers": {
+ "pacing": {
+ "lsa_group": 25,
+ },
+ },
+ "max_metric": {"router_lsa": True, "on_startup": {"time": 100}},
+ "areas": [{"area_id": "10", "capability": True}],
+ "passive_interfaces": {
+ "default": True,
+ "interface": {
+ "set_interface": False,
+ "name": ["GigabitEthernet0/2", "GigabitEthernet0/1"],
+ },
+ },
+ },
+ {
+ "process_id": 210,
+ "vrf": "green",
+ "auto_cost": {"set": True, "reference_bandwidth": 5},
+ "distribute_list": {
+ "acls": [
+ {"name": "5120", "direction": "out"},
+ {"name": "123", "direction": "out"},
+ ],
+ },
+ "domain_id": {"ip_address": {"address": "192.0.3.1"}},
+ "nsf": {
+ "ietf": {
+ "strict_lsa_checking": True,
+ },
+ },
+ "mpls": {
+ "ldp": {
+ "sync": True,
+ },
+ },
+ "timers": {
+ "pacing": {
+ "flood": 25,
+ },
+ },
+ "max_metric": {
+ "router_lsa": True,
+ "on_startup": {"wait_for_bgp": True},
+ },
+ "areas": [{"area_id": "11", "capability": True}],
+ "passive_interfaces": {
+ "default": True,
+ "interface": {
+ "set_interface": False,
+ "name": ["GigabitEthernet0/2"],
+ },
+ },
+ },
+ ],
+ },
+ state="overridden",
+ ),
+ )
+
+ result = self.execute_module(changed=True)
+ print(result["commands"])
+ commands = [
+ "router ospf 200 vrf blue",
+ "domain-id null",
+ "queue-depth hello unlimited",
+ "queue-depth update unlimited",
+ "timers pacing lsa-group 25",
+ "no area 10 filter-list prefix test_prefix_in in",
+ "distribute-list 110 out",
+ "no distribute-list 10 out",
+ "router ospf 210 vrf green",
+ "auto-cost reference-bandwidth 5",
+ "max-metric router-lsa on-startup wait-for-bgp",
+ "mpls ldp sync",
+ "nsf ietf helper strict-lsa-checking",
+ "timers pacing flood 25",
+ "area 11 capability default-exclusion",
+ "no area 10 capability default-exclusion",
+ "distribute-list 5120 out",
+ "no distribute-list 123 in",
+ "distribute-list 123 out",
+ "no distribute-list 10 out",
+ "passive-interface GigabitEthernet0/1",
+ ]
+ self.assertEqual(result["commands"], commands)
+
+ def test_ios_ospfv2_overridden_idempotent(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ 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
+ passive-interface default
+ no passive-interface GigabitEthernet0/1
+ no passive-interface GigabitEthernet0/2
+ """,
+ )
+ set_module_args(
+ dict(
+ config=dict(
+ processes=[
+ {
+ "process_id": 200,
+ "vrf": "blue",
+ "auto_cost": {"set": True, "reference_bandwidth": 4},
+ "distribute_list": {
+ "acls": [
+ {"name": "10", "direction": "out"},
+ {"name": "123", "direction": "in"},
+ ],
+ },
+ "domain_id": {"ip_address": {"address": "192.0.3.1"}},
+ "max_metric": {"router_lsa": True, "on_startup": {"time": 100}},
+ "areas": [{"area_id": "10", "capability": True}],
+ "passive_interfaces": {
+ "default": True,
+ "interface": {
+ "set_interface": False,
+ "name": ["GigabitEthernet0/2", "GigabitEthernet0/1"],
+ },
+ },
+ },
+ ],
+ ),
+ state="overridden",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv3.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv3.py
index 5403ef25d..30c646123 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv3.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv3.py
@@ -21,33 +21,12 @@ class TestIosOspfV3Module(TestIosModule):
def setUp(self):
super(TestIosOspfV3Module, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.ospfv3.ospfv3."
"Ospfv3Facts.get_ospfv3_data",
@@ -56,11 +35,7 @@ class TestIosOspfV3Module(TestIosModule):
def tearDown(self):
super(TestIosOspfV3Module, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def load_fixtures(self, commands=None):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ping.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ping.py
index 7e7035eae..bdb822e62 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ping.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ping.py
@@ -87,6 +87,7 @@ class TestIosPingModule(TestIosModule):
"afi": "ip",
"count": 4,
"dest": "8.8.8.8",
+ "size": 800,
"df_bit": True,
"source": "Loopback88",
"state": "present",
@@ -95,7 +96,7 @@ class TestIosPingModule(TestIosModule):
)
result = self.execute_module()
mock_res = {
- "commands": "ping vrf DummyVrf ip 8.8.8.8 repeat 4 df-bit source Loopback88",
+ "commands": "ping vrf DummyVrf ip 8.8.8.8 repeat 4 df-bit size 800 source Loopback88",
"packet_loss": "0%",
"packets_rx": 2,
"packets_tx": 2,
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_prefix_lists.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_prefix_lists.py
index 29a4f4c24..2aac373dd 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_prefix_lists.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_prefix_lists.py
@@ -21,33 +21,12 @@ class TestIosPrefixListsModule(TestIosModule):
def setUp(self):
super(TestIosPrefixListsModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.prefix_lists.prefix_lists."
"Prefix_listsFacts.get_prefix_list_data",
@@ -56,11 +35,7 @@ class TestIosPrefixListsModule(TestIosModule):
def tearDown(self):
super(TestIosPrefixListsModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def load_fixtures(self, commands=None):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_route_maps.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_route_maps.py
index c0600290c..0e450f908 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_route_maps.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_route_maps.py
@@ -21,33 +21,12 @@ class TestIosRouteMapsModule(TestIosModule):
def setUp(self):
super(TestIosRouteMapsModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.route_maps.route_maps."
"Route_mapsFacts.get_route_maps_data",
@@ -56,11 +35,7 @@ class TestIosRouteMapsModule(TestIosModule):
def tearDown(self):
super(TestIosRouteMapsModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def load_fixtures(self, commands=None):
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_service.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_service.py
index b77be44f2..cbf9a9fd7 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_service.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_service.py
@@ -23,33 +23,12 @@ class TestIosServiceModule(TestIosModule):
def setUp(self):
super(TestIosServiceModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.service.service."
"ServiceFacts.get_service_data",
@@ -58,11 +37,7 @@ class TestIosServiceModule(TestIosModule):
def tearDown(self):
super(TestIosServiceModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_service_merged_idempotent(self):
@@ -197,6 +172,62 @@ class TestIosServiceModule(TestIosModule):
self.assertEqual(sorted(result["commands"]), sorted(deleted))
+ def test_ios_service_overridden(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ service call-home
+ service config
+ service counters max age 0
+ service dhcp
+ service pad
+ service password-recovery
+ service private-config-encryption
+ service prompt config
+ service slave-log
+ service timestamps log datetime msec
+ """,
+ )
+ playbook = {
+ "config": {
+ "timestamps": [
+ {
+ "msg": "log",
+ "timestamp": "datetime",
+ "datetime_options": {
+ "localtime": True,
+ "msec": True,
+ "show_timezone": True,
+ "year": True,
+ },
+ },
+ {
+ "msg": "debug",
+ "timestamp": "datetime",
+ },
+ ],
+ "tcp_keepalives_in": True,
+ "tcp_keepalives_out": True,
+ "password_encryption": True,
+ "counters": 5,
+ },
+ }
+ overridden = [
+ "no service call-home",
+ "no service config",
+ "no service pad",
+ "service counters max age 5",
+ "service password-encryption",
+ "service tcp-keepalives-in",
+ "service tcp-keepalives-out",
+ "service timestamps debug datetime",
+ "service timestamps log datetime msec localtime show-timezone year",
+ ]
+ playbook["state"] = "overridden"
+ set_module_args(playbook)
+ result = self.execute_module(changed=True)
+
+ self.assertEqual(sorted(result["commands"]), sorted(overridden))
+
def test_ios_service_replaced(self):
self.execute_show_command.return_value = dedent(
"""\
@@ -270,7 +301,48 @@ class TestIosServiceModule(TestIosModule):
playbook = {
"config": {
"call_home": True,
- "private_config_encryption": True,
+ "timestamps": [
+ {
+ "msg": "debug",
+ "timestamp": "datetime",
+ "datetime_options": {
+ "msec": True,
+ },
+ },
+ {
+ "msg": "log",
+ "timestamp": "datetime",
+ "datetime_options": {
+ "msec": True,
+ },
+ },
+ ],
+ },
+ }
+ replaced = []
+ playbook["state"] = "replaced"
+ set_module_args(playbook)
+ result = self.execute_module(changed=False)
+ self.maxDiff = None
+
+ self.assertEqual(sorted(result["commands"]), sorted(replaced))
+
+ def test_ios_service_replaced_idempotent_old(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ service slave-log
+ service timestamps debug datetime msec
+ service timestamps log datetime msec
+ service prompt config
+ service counters max age 0
+ service dhcp
+ service call-home
+ service password-recovery
+ """,
+ )
+ playbook = {
+ "config": {
+ "call_home": True,
"timestamps": [
{
"msg": "debug",
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_snmp_server.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_snmp_server.py
index e0319bd7b..c45f3548a 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_snmp_server.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_snmp_server.py
@@ -22,34 +22,12 @@ class TestIosSnmpServerModule(TestIosModule):
def setUp(self):
super(TestIosSnmpServerModule, self).setUp()
-
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.snmp_server.snmp_server."
"Snmp_serverFacts.get_snmp_data",
@@ -65,11 +43,7 @@ class TestIosSnmpServerModule(TestIosModule):
def tearDown(self):
super(TestIosSnmpServerModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
self.mock_execute_show_command_user.stop()
@@ -327,7 +301,9 @@ class TestIosSnmpServerModule(TestIosModule):
"ipsla": True,
"isis": True,
"l2tun": {"pseudowire_status": True, "session": True},
- "mpls_vpn": True,
+ "mpls": {
+ "vpn": {"enable": True},
+ },
"msdp": True,
"mvpn": True,
"ospf": {
@@ -422,7 +398,7 @@ class TestIosSnmpServerModule(TestIosModule):
"""\
User name: paul
Engine ID: 000000090200000000000A0B
- storage-type: nonvolatile active access-list: ipv6
+ storage-type: nonvolatile active access-list ipv6: ipv6only
Authentication Protocol: MD5
Privacy Protocol: AES128
Group-name: familypaul
@@ -598,7 +574,9 @@ class TestIosSnmpServerModule(TestIosModule):
"ipsla": True,
"isis": True,
"l2tun": {"pseudowire_status": True, "session": True},
- "mpls_vpn": True,
+ "mpls": {
+ "vpn": {"enable": True},
+ },
"msdp": True,
"mvpn": True,
"ospf": {
@@ -643,7 +621,12 @@ class TestIosSnmpServerModule(TestIosModule):
},
"users": [
{"acl_v4": "24", "group": "newfamily", "username": "newuser", "version": "v1"},
- {"acl_v4": "ipv6", "group": "familypaul", "username": "paul", "version": "v3"},
+ {
+ "acl_v6": "ipv6only",
+ "group": "familypaul",
+ "username": "paul",
+ "version": "v3",
+ },
{"group": "replaceUser", "username": "replaceUser", "version": "v3"},
{"acl_v4": "27", "group": "mfamily", "username": "flow", "version": "v3"},
],
@@ -663,7 +646,8 @@ class TestIosSnmpServerModule(TestIosModule):
"snmp-server trap-source GigabitEthernet0/0",
"snmp-server system-shutdown",
"snmp-server enable traps bfd",
- "snmp-server enable traps bgp cbgp2 state-changes all backward-trans limited threshold prefix",
+ "snmp-server enable traps bgp cbgp2",
+ "snmp-server enable traps bgp state-changes all backward-trans limited threshold prefix",
"snmp-server enable traps bridge newroot topologychange",
"snmp-server enable traps eigrp",
"snmp-server enable traps energywise",
@@ -698,11 +682,11 @@ class TestIosSnmpServerModule(TestIosModule):
"snmp-server enable traps l2tun pseudowire status",
"snmp-server enable traps l2tun session",
"snmp-server enable traps pim neighbor-change rp-mapping-change invalid-pim-message",
- "snmp-server enable traps snmp authentication linkdown linkup warmstart coldstart",
+ "snmp-server enable traps snmp authentication linkdown linkup coldstart warmstart",
"snmp-server enable traps frame-relay",
"snmp-server enable traps cef resource-failure peer-state-change peer-fib-state-change inconsistency",
"snmp-server enable traps dlsw",
- "snmp-server enable traps ethernet evc create delete status",
+ "snmp-server enable traps ethernet evc status create delete",
"snmp-server host 172.16.2.1 version 2c trapsac tty",
"snmp-server host 172.16.1.1 version 3 auth group0 tty",
"snmp-server host 172.16.2.99 check slb",
@@ -718,8 +702,8 @@ class TestIosSnmpServerModule(TestIosModule):
"snmp-server context contextWord2",
"snmp-server password-policy policy3 define min-len 12 max-len 12 upper-case 12 special-char 22 digits 23 change 11",
"snmp-server user newuser newfamily v1 access 24",
- "snmp-server user paul familypaul v3 access ipv6",
- "snmp-server user replaceUser replaceUser v3",
+ "snmp-server user paul familypaul v3 access ipv6 ipv6only",
+ "snmp-server user replaceUser replaceUser v3 access 22",
"snmp-server user flow mfamily v3 access 27",
]
playbook["state"] = "merged"
@@ -755,65 +739,109 @@ class TestIosSnmpServerModule(TestIosModule):
snmp-server contact this is contact string
snmp-server chassis-id this is a chassis id string
snmp-server system-shutdown
- snmp-server enable traps snmp authentication linkdown linkup coldstart warmstart
- snmp-server enable traps flowmon
- snmp-server enable traps tty
- snmp-server enable traps eigrp
- snmp-server enable traps casa
- snmp-server enable traps ospf state-change
- snmp-server enable traps ospf errors
- snmp-server enable traps ospf retransmit
- snmp-server enable traps ospf lsa
- snmp-server enable traps ospf cisco-specific state-change nssa-trans-change
- snmp-server enable traps ospf cisco-specific state-change shamlink interface
- snmp-server enable traps ospf cisco-specific state-change shamlink neighbor
- snmp-server enable traps ospf cisco-specific errors
- snmp-server enable traps ospf cisco-specific retransmit
- snmp-server enable traps ospf cisco-specific lsa
- snmp-server enable traps ethernet cfm cc mep-up mep-down cross-connect loop config
- snmp-server enable traps ethernet cfm crosscheck mep-missing mep-unknown service-up
+ snmp-server enable traps aaa_server
snmp-server enable traps auth-framework sec-violation
+ snmp-server enable traps bfd
+ snmp-server enable traps bgp
+ snmp-server enable traps bgp cbgp2
+ snmp-server enable traps bridge newroot topologychange
+ snmp-server enable traps bulkstat collection transfer
+ snmp-server enable traps call-home message-send-fail server-fail
+ snmp-server enable traps cef resource-failure peer-state-change peer-fib-state-change inconsistency
+ snmp-server enable traps config
+ snmp-server enable traps config-copy
+ snmp-server enable traps config-ctid
+ snmp-server enable traps cpu threshold
+ snmp-server enable traps dhcp
+ snmp-server enable traps eigrp
snmp-server enable traps energywise
- snmp-server enable traps pw vc
- snmp-server enable traps l2tun session
- snmp-server enable traps l2tun pseudowire status
+ snmp-server enable traps entity
+ snmp-server enable traps entity-diag boot-up-fail hm-test-recover hm-thresh-reached scheduled-test-fail
+ snmp-server enable traps entity-perf throughput-notif
+ snmp-server enable traps entity-state
+ snmp-server enable traps envmon fan shutdown supply temperature status
+ snmp-server enable traps errdisable
snmp-server enable traps ether-oam
+ snmp-server enable traps ethernet cfm alarm
+ snmp-server enable traps ethernet cfm cc mep-up mep-down cross-connect loop config
+ snmp-server enable traps ethernet cfm crosscheck mep-missing mep-unknown service-up
snmp-server enable traps ethernet evc status create delete
- snmp-server enable traps bridge newroot topologychange
- snmp-server enable traps vtp
+ snmp-server enable traps event-manager
+ snmp-server enable traps flash insertion removal lowspace
+ snmp-server enable traps flex-links status
+ snmp-server enable traps flowmon
+ snmp-server enable traps fru-ctrl
+ snmp-server enable traps hsrp
snmp-server enable traps ike policy add
snmp-server enable traps ike policy delete
snmp-server enable traps ike tunnel start
snmp-server enable traps ike tunnel stop
+ snmp-server enable traps ipmulticast
snmp-server enable traps ipsec cryptomap add
- snmp-server enable traps ipsec cryptomap delete
snmp-server enable traps ipsec cryptomap attach
+ snmp-server enable traps ipsec cryptomap delete
snmp-server enable traps ipsec cryptomap detach
+ snmp-server enable traps ipsec too-many-sas
snmp-server enable traps ipsec tunnel start
snmp-server enable traps ipsec tunnel stop
- snmp-server enable traps ipsec too-many-sas
- snmp-server enable traps bfd
- snmp-server enable traps bgp
- snmp-server enable traps bgp cbgp2
- snmp-server enable traps cef resource-failure peer-state-change peer-fib-state-change inconsistency
- snmp-server enable traps dlsw
- snmp-server enable traps frame-relay
- snmp-server enable traps frame-relay subif
- snmp-server enable traps hsrp
- snmp-server enable traps ipmulticast
+ snmp-server enable traps ipsla
snmp-server enable traps isis
+ snmp-server enable traps license
+ snmp-server enable traps l2tc threshold sys-threshold
+ snmp-server enable traps lisp
+ snmp-server enable traps local-auth
+ snmp-server enable traps mac-notification change move threshold
+ snmp-server enable traps memory bufferpeak
+ snmp-server enable traps mpls fast-reroute protected
+ snmp-server enable traps mpls rfc ldp
+ snmp-server enable traps mpls rfc traffic-eng
+ snmp-server enable traps mpls rfc vpn
+ snmp-server enable traps mpls traffic-eng
+ snmp-server enable traps mpls vpn
snmp-server enable traps msdp
snmp-server enable traps mvpn
+ snmp-server enable traps nhrp nhc
+ snmp-server enable traps nhrp nhp
+ snmp-server enable traps nhrp nhs
+ snmp-server enable traps nhrp quota-exceeded
+ snmp-server enable traps ospf cisco-specific errors
+ snmp-server enable traps ospf cisco-specific lsa
+ snmp-server enable traps ospf cisco-specific retransmit
+ snmp-server enable traps ospf cisco-specific state-change nssa-trans-change
+ snmp-server enable traps ospf cisco-specific state-change shamlink interface
+ snmp-server enable traps ospf cisco-specific state-change shamlink neighbor
+ snmp-server enable traps ospf errors
+ snmp-server enable traps ospf lsa
+ snmp-server enable traps ospf retransmit
+ snmp-server enable traps ospf state-change
+ snmp-server enable traps ospfv3 errors
+ snmp-server enable traps ospfv3 state-change
snmp-server enable traps pim neighbor-change rp-mapping-change invalid-pim-message
- snmp-server enable traps rsvp
- snmp-server enable traps ipsla
- snmp-server enable traps slb real virtual csrp
- snmp-server enable traps syslog
- snmp-server enable traps event-manager
snmp-server enable traps pki
- snmp-server enable traps ethernet cfm alarm
- snmp-server enable traps mpls vpn
+ snmp-server enable traps port-security
+ snmp-server enable traps power-ethernet police
+ snmp-server enable traps pw vc
+ snmp-server enable traps rep
+ snmp-server enable traps rf
+ snmp-server enable traps smart-license
+ snmp-server enable traps snmp authentication linkdown linkup coldstart warmstart
+ snmp-server enable traps stackwise
+ snmp-server enable traps stpx inconsistency root-inconsistency loop-inconsistency
+ snmp-server enable traps syslog
+ snmp-server enable traps transceiver all
+ snmp-server enable traps trustsec authz-file-error cache-file-error keystore-file-error keystore-sync-fail random-number-fail src-entropy-fail
+ snmp-server enable traps trustsec-interface unauthorized sap-fail authc-fail supplicant-fail authz-fail
+ snmp-server enable traps trustsec-policy peer-policy-updated authz-sgacl-fail
+ snmp-server enable traps trustsec-server radius-server provision-secret
+ snmp-server enable traps trustsec-sxp conn-srcaddr-err msg-parse-err conn-config-err binding-err conn-up conn-down binding-expn-fail
+ snmp-server enable traps tty
+ snmp-server enable traps udld link-fail-rpt status-change
+ snmp-server enable traps vlan-membership
+ snmp-server enable traps vlancreate
+ snmp-server enable traps vlandelete
snmp-server enable traps vrfmib vrf-up vrf-down vnet-trunk-up vnet-trunk-down
+ snmp-server enable traps vswitch dual-active vsl
+ snmp-server enable traps vtp
snmp-server host 172.16.2.99 informs version 2c check msdp
snmp-server host 172.16.2.99 check slb
snmp-server host 172.16.2.99 checktrap isis
@@ -846,60 +874,109 @@ class TestIosSnmpServerModule(TestIosModule):
"no snmp-server source-interface informs Loopback999",
"no snmp-server trap-source GigabitEthernet0/0",
"no snmp-server system-shutdown",
- "no snmp-server enable traps auth-framework",
+ "no snmp-server enable traps aaa_server",
+ "no snmp-server enable traps auth-framework sec-violation",
"no snmp-server enable traps bfd",
"no snmp-server enable traps bgp",
+ "no snmp-server enable traps bgp cbgp2",
"no snmp-server enable traps bridge newroot topologychange",
- "no snmp-server enable traps casa",
+ "no snmp-server enable traps bulkstat collection transfer",
+ "no snmp-server enable traps call-home message-send-fail server-fail",
+ "no snmp-server enable traps cef resource-failure peer-state-change peer-fib-state-change inconsistency",
+ "no snmp-server enable traps config",
+ "no snmp-server enable traps config-copy",
+ "no snmp-server enable traps config-ctid",
+ "no snmp-server enable traps cpu threshold",
+ "no snmp-server enable traps dhcp",
"no snmp-server enable traps eigrp",
"no snmp-server enable traps energywise",
+ "no snmp-server enable traps entity",
+ "no snmp-server enable traps entity-diag boot-up-fail hm-test-recover hm-thresh-reached scheduled-test-fail",
+ "no snmp-server enable traps entity-perf throughput-notif",
+ "no snmp-server enable traps entity-state",
+ "no snmp-server enable traps envmon fan shutdown supply temperature status",
+ "no snmp-server enable traps errdisable",
+ "no snmp-server enable traps ether-oam",
+ "no snmp-server enable traps ethernet cfm alarm",
+ "no snmp-server enable traps ethernet cfm cc mep-up mep-down cross-connect loop config",
+ "no snmp-server enable traps ethernet cfm crosscheck mep-missing mep-unknown service-up",
+ "no snmp-server enable traps ethernet evc status create delete",
"no snmp-server enable traps event-manager",
+ "no snmp-server enable traps flash insertion removal lowspace",
+ "no snmp-server enable traps flex-links status",
"no snmp-server enable traps flowmon",
+ "no snmp-server enable traps fru-ctrl",
"no snmp-server enable traps hsrp",
- "no snmp-server enable traps ipsla",
- "no snmp-server enable traps isis",
- "no snmp-server enable traps msdp",
- "no snmp-server enable traps mvpn",
- "no snmp-server enable traps mpls vpn",
- "no snmp-server enable traps pki",
- "no snmp-server enable traps pw vc",
- "no snmp-server enable traps rsvp",
- "no snmp-server enable traps syslog",
- "no snmp-server enable traps tty",
- "no snmp-server enable traps vrfmib vrf-up vrf-down vnet-trunk-up vnet-trunk-down",
- "no snmp-server enable traps ipmulticast",
"no snmp-server enable traps ike policy add",
"no snmp-server enable traps ike policy delete",
"no snmp-server enable traps ike tunnel start",
"no snmp-server enable traps ike tunnel stop",
+ "no snmp-server enable traps ipmulticast",
"no snmp-server enable traps ipsec cryptomap add",
- "no snmp-server enable traps ipsec cryptomap delete",
"no snmp-server enable traps ipsec cryptomap attach",
+ "no snmp-server enable traps ipsec cryptomap delete",
"no snmp-server enable traps ipsec cryptomap detach",
+ "no snmp-server enable traps ipsec too-many-sas",
"no snmp-server enable traps ipsec tunnel start",
"no snmp-server enable traps ipsec tunnel stop",
- "no snmp-server enable traps ipsec too-many-sas",
+ "no snmp-server enable traps ipsla",
+ "no snmp-server enable traps isis",
+ "no snmp-server enable traps license",
+ "no snmp-server enable traps l2tc threshold sys-threshold",
+ "no snmp-server enable traps lisp",
+ "no snmp-server enable traps local-auth",
+ "no snmp-server enable traps mac-notification change move threshold",
+ "no snmp-server enable traps memory bufferpeak",
+ "no snmp-server enable traps mpls fast-reroute protected",
+ "no snmp-server enable traps mpls rfc ldp",
+ "no snmp-server enable traps mpls rfc traffic-eng",
+ "no snmp-server enable traps mpls rfc vpn",
+ "no snmp-server enable traps mpls traffic-eng",
+ "no snmp-server enable traps mpls vpn",
+ "no snmp-server enable traps msdp",
+ "no snmp-server enable traps mvpn",
+ "no snmp-server enable traps nhrp nhc",
+ "no snmp-server enable traps nhrp nhp",
+ "no snmp-server enable traps nhrp nhs",
+ "no snmp-server enable traps nhrp quota-exceeded",
"no snmp-server enable traps ospf cisco-specific errors",
- "no snmp-server enable traps ospf cisco-specific retransmit",
"no snmp-server enable traps ospf cisco-specific lsa",
+ "no snmp-server enable traps ospf cisco-specific retransmit",
"no snmp-server enable traps ospf cisco-specific state-change nssa-trans-change",
"no snmp-server enable traps ospf cisco-specific state-change shamlink interface",
"no snmp-server enable traps ospf cisco-specific state-change shamlink neighbor",
"no snmp-server enable traps ospf errors",
- "no snmp-server enable traps ospf retransmit",
"no snmp-server enable traps ospf lsa",
+ "no snmp-server enable traps ospf retransmit",
"no snmp-server enable traps ospf state-change",
- "no snmp-server enable traps l2tun pseudowire status",
- "no snmp-server enable traps l2tun session",
+ "no snmp-server enable traps ospfv3 errors",
+ "no snmp-server enable traps ospfv3 state-change",
"no snmp-server enable traps pim neighbor-change rp-mapping-change invalid-pim-message",
- "no snmp-server enable traps snmp authentication linkdown linkup warmstart coldstart",
- "no snmp-server enable traps frame-relay",
- "no snmp-server enable traps cef resource-failure peer-state-change peer-fib-state-change inconsistency",
- "no snmp-server enable traps dlsw",
- "no snmp-server enable traps ethernet evc create delete status",
- "no snmp-server enable traps ethernet cfm alarm",
- "no snmp-server enable traps ethernet cfm cc mep-up mep-down cross-connect loop config",
- "no snmp-server enable traps ethernet cfm crosscheck mep-missing mep-unknown service-up",
+ "no snmp-server enable traps pki",
+ "no snmp-server enable traps port-security",
+ "no snmp-server enable traps power-ethernet police",
+ "no snmp-server enable traps pw vc",
+ "no snmp-server enable traps rep",
+ "no snmp-server enable traps rf",
+ "no snmp-server enable traps smart-license",
+ "no snmp-server enable traps snmp authentication linkdown linkup coldstart warmstart",
+ "no snmp-server enable traps stackwise",
+ "no snmp-server enable traps stpx inconsistency root-inconsistency loop-inconsistency",
+ "no snmp-server enable traps syslog",
+ "no snmp-server enable traps transceiver all",
+ "no snmp-server enable traps trustsec authz-file-error cache-file-error keystore-file-error keystore-sync-fail random-number-fail src-entropy-fail",
+ "no snmp-server enable traps trustsec-interface unauthorized sap-fail authc-fail supplicant-fail authz-fail",
+ "no snmp-server enable traps trustsec-policy peer-policy-updated authz-sgacl-fail",
+ "no snmp-server enable traps trustsec-server radius-server provision-secret",
+ "no snmp-server enable traps trustsec-sxp conn-srcaddr-err msg-parse-err conn-config-err binding-err conn-up conn-down binding-expn-fail",
+ "no snmp-server enable traps tty",
+ "no snmp-server enable traps udld link-fail-rpt status-change",
+ "no snmp-server enable traps vlan-membership",
+ "no snmp-server enable traps vlancreate",
+ "no snmp-server enable traps vlandelete",
+ "no snmp-server enable traps vrfmib vrf-up vrf-down vnet-trunk-up vnet-trunk-down",
+ "no snmp-server enable traps vswitch dual-active vsl",
+ "no snmp-server enable traps vtp",
"no snmp-server host 172.16.1.1 version 3 auth group0 tty",
"no snmp-server host 172.16.2.1 version 3 priv newtera rsrb",
"no snmp-server host 172.16.2.1 version 3 noauth replaceUser slb",
@@ -1105,7 +1182,7 @@ class TestIosSnmpServerModule(TestIosModule):
"trap_source": "GigabitEthernet0/0",
"trap_timeout": 2,
"traps": {
- "auth_framework": {"enable": True},
+ "auth_framework": {"enable": True, "sec_violation": True},
"bfd": {"enable": True},
"bgp": {"cbgp2": True, "enable": True},
"bridge": {"enable": True, "newroot": True, "topologychange": True},
@@ -1155,7 +1232,9 @@ class TestIosSnmpServerModule(TestIosModule):
"ipsla": True,
"isis": True,
"l2tun": {"pseudowire_status": True, "session": True},
- "mpls_vpn": True,
+ "mpls": {
+ "vpn": {"enable": True},
+ },
"msdp": True,
"mvpn": True,
"ospf": {
@@ -1200,7 +1279,12 @@ class TestIosSnmpServerModule(TestIosModule):
},
"users": [
{"acl_v4": "24", "group": "newfamily", "username": "newuser", "version": "v1"},
- {"acl_v4": "ipv6", "group": "familypaul", "username": "paul", "version": "v3"},
+ {
+ "acl_v6": "ipv6acl",
+ "group": "familypaul",
+ "username": "paul",
+ "version": "v3",
+ },
{"group": "replaceUser", "username": "replaceUser", "version": "v3"},
],
"views": [
@@ -1243,8 +1327,9 @@ class TestIosSnmpServerModule(TestIosModule):
"no snmp-server context contextBAD",
"snmp-server password-policy policy1 define max-len 24 upper-case 12 lower-case 12 special-char 32 digits 23 change 3",
"snmp-server password-policy policy2 define min-len 12 upper-case 12 special-char 22 change 9",
- "snmp-server user paul familypaul v3 access ipv6",
+ "snmp-server user paul familypaul v3 access ipv6 ipv6acl",
"snmp-server view newView TestFamilyName included",
+ "no snmp-server enable traps vtp",
"no snmp-server view test-view! test-test included",
]
playbook["state"] = "overridden"
@@ -1351,10 +1436,11 @@ class TestIosSnmpServerModule(TestIosModule):
},
},
"envmon": {
+ "enable": True,
"status": True,
"supply": True,
"temperature": True,
- "fan": {"supply": True, "temperature": True},
+ "fan_enable": True,
},
"ethernet": {
"cfm": {
@@ -1711,7 +1797,7 @@ class TestIosSnmpServerModule(TestIosModule):
def test_ios_snmpv3_user_server_merged(self):
self.execute_show_command.return_value = dedent(
"""\
- snmp-server user rhcisco testfamily v3 access ipv6
+ snmp-server user rhcisco testfamily v3 access ipv4
""",
)
@@ -1726,14 +1812,14 @@ class TestIosSnmpServerModule(TestIosModule):
User name: paul
Engine ID: 000000090200000000000A0B
- storage-type: nonvolatile active access-list: ipv6
+ storage-type: nonvolatile active access-list: 22
Authentication Protocol: MD5
Privacy Protocol: None
Group-name: familypaul
User name: flow
Engine ID: 000000090200000000000A0B
- storage-type: nonvolatile active access-list: 27
+ storage-type: nonvolatile active access-list: 22
Authentication Protocol: MD5
Privacy Protocol: None
Group-name: mfamily
@@ -1743,13 +1829,23 @@ class TestIosSnmpServerModule(TestIosModule):
playbook = {
"config": {
"users": [
- {"acl_v4": "ipv6", "group": "familypaul", "username": "paul", "version": "v3"},
- {"acl_v4": "27", "group": "mfamily", "username": "flow", "version": "v3"},
+ {
+ "acl_v6": "ipv6acl",
+ "group": "familypaul",
+ "username": "paul",
+ "version": "v3",
+ },
+ {
+ "acl_v4": "27",
+ "group": "mfamily",
+ "username": "flow",
+ "version": "v3",
+ },
],
},
}
merged = [
- "snmp-server user paul familypaul v3 access ipv6",
+ "snmp-server user paul familypaul v3 access ipv6 ipv6acl 22",
"snmp-server user flow mfamily v3 access 27",
]
@@ -1786,13 +1882,27 @@ class TestIosSnmpServerModule(TestIosModule):
playbook = {
"config": {
"users": [
- {"group": "replaceUser", "username": "replaceUser", "version": "v3"},
- {"acl_v4": "27", "group": "mfamily", "username": "flow", "version": "v3"},
+ {
+ "acl_v4": "22",
+ "authentication": {
+ "algorithm": "md5",
+ "password": "replaceUser",
+ },
+ "group": "replaceUser",
+ "username": "replaceUser",
+ "version": "v3",
+ },
+ {
+ "acl_v4": "27",
+ "group": "mfamily",
+ "username": "flow",
+ "version": "v3",
+ },
],
},
}
overridden = [
- "no snmp-server user flow mfamily v3",
+ "no snmp-server user flow mfamily v3 access 27",
"snmp-server user flow mfamily v3 access 27",
"no snmp-server user newuser newfamily v1 access 24",
]
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_static_routes.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_static_routes.py
index bbc2b2e0f..d1046cc72 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_static_routes.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_static_routes.py
@@ -23,33 +23,12 @@ class TestIosStaticRoutesModule(TestIosModule):
def setUp(self):
super(TestIosStaticRoutesModule, self).setUp()
- self.mock_get_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
- )
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
- )
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_resource_connection_config = patch(
- "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base."
- "get_resource_connection",
- )
- self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
-
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
"get_resource_connection",
)
self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
- self.mock_edit_config = patch(
- "ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers.CliProvider.edit_config",
- )
- self.edit_config = self.mock_edit_config.start()
-
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.static_routes.static_routes."
"Static_routesFacts.get_static_routes_data",
@@ -58,11 +37,7 @@ class TestIosStaticRoutesModule(TestIosModule):
def tearDown(self):
super(TestIosStaticRoutesModule, self).tearDown()
- self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
- self.mock_edit_config.stop()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
self.mock_execute_show_command.stop()
def test_ios_static_routes_merged(self):
@@ -127,8 +102,8 @@ class TestIosStaticRoutesModule(TestIosModule):
)
result = self.execute_module(changed=True)
commands = [
- "ip route vrf ansible_vrf 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150",
"ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast",
+ "ip route vrf ansible_vrf 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150",
]
self.assertEqual(result["commands"], commands)
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_user.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_user.py
index 28d5126c2..8cd3c07c3 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_user.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_user.py
@@ -49,7 +49,7 @@ class TestIosUserModule(TestIosModule):
self.mock_get_config.stop()
self.mock_load_config.stop()
- def load_fixtures(self, commands=None, transport="cli"):
+ def load_fixtures(self, commands=None):
self.get_config.return_value = load_fixture("ios_user_config.cfg")
self.load_config.return_value = dict(diff=None, session="session")
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vlans.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vlans.py
index 201e814c5..c19d58ffd 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vlans.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vlans.py
@@ -50,6 +50,18 @@ class TestIosVlansModule(TestIosModule):
)
self.edit_config = self.mock_edit_config.start()
+ self.mock_get_resource_connection_facts_2 = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
+ "get_resource_connection",
+ )
+ self.get_resource_connection_facts_2 = self.mock_get_resource_connection_facts_2.start()
+
+ self.mock_execute_show_command_2 = patch(
+ "ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.vlans.vlans."
+ "VlansFacts.get_vlans_data",
+ )
+ self.execute_show_command_2 = self.mock_execute_show_command_2.start()
+
self.mock_execute_show_command = patch(
"ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.vlans.vlans."
"VlansFacts.get_vlans_data",
@@ -69,8 +81,10 @@ class TestIosVlansModule(TestIosModule):
self.mock_load_config.stop()
self.mock_execute_show_command.stop()
self.mock_l2_device_command.stop()
+ self.mock_get_resource_connection_facts_2.stop()
+ self.mock_execute_show_command_2.stop()
- def load_fixtures(self, commands=None, transport="cli"):
+ def load_fixtures(self, commands=None):
def load_from_file(*args, **kwargs):
return load_fixture("ios_vlans_config.cfg")
@@ -372,7 +386,7 @@ class TestIosVlansModule(TestIosModule):
)
self.execute_module(changed=False, commands=[], sort=True)
- def test_ios_delete_vlans_config(self):
+ def test_ios_delete_vlans(self):
set_module_args(dict(config=[dict(vlan_id=150)], state="deleted"))
result = self.execute_module(changed=True)
commands = ["no vlan 150"]
@@ -648,3 +662,220 @@ class TestIosVlansModule(TestIosModule):
self.maxDiff = None
self.assertEqual(result["gathered"], gathered)
+
+ def test_ios_vlans_config_merged(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ vlan_id=101,
+ member=dict(
+ evi=101,
+ vni=10101,
+ ),
+ ),
+ ],
+ state="merged",
+ configuration=True,
+ ),
+ )
+ result = self.execute_module(changed=True)
+ commands = [
+ "vlan configuration 101",
+ "member evpn-instance 101 vni 10101",
+ ]
+ self.assertEqual(result["commands"], commands)
+
+ def test_ios_vlans_config_merged_idempotent(self):
+ self.execute_show_command_2 = self.mock_execute_show_command_2.start()
+ self.execute_show_command_2.return_value = dedent(
+ """\
+ vlan configuration 101
+ member evpn-instance 101 vni 10101
+ vlan configuration 102
+ member evpn-instance 102 vni 10102
+ vlan configuration 201
+ member evpn-instance 201 vni 10201
+ vlan configuration 202
+ member evpn-instance 202 vni 10202
+ vlan configuration 901
+ member vni 50901
+ vlan configuration 902
+ member vni 50902
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ vlan_id=101,
+ member=dict(
+ evi=101,
+ vni=10101,
+ ),
+ ),
+ ],
+ state="merged",
+ configuration=True,
+ ),
+ )
+ self.execute_module(changed=False, commands=[], sort=True)
+
+ def test_ios_vlans_config_overridden(self):
+ self.execute_show_command_2 = self.mock_execute_show_command_2.start()
+ self.execute_show_command_2.return_value = dedent(
+ """\
+ vlan configuration 101
+ member evpn-instance 101 vni 10101
+ vlan configuration 102
+ member evpn-instance 102 vni 10102
+ vlan configuration 201
+ member evpn-instance 201 vni 10201
+ vlan configuration 202
+ member evpn-instance 202 vni 10202
+ vlan configuration 901
+ member vni 50901
+ vlan configuration 902
+ member vni 50902
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ vlan_id=101,
+ member=dict(
+ evi=102,
+ vni=10102,
+ ),
+ ),
+ dict(
+ vlan_id=102,
+ member=dict(
+ evi=101,
+ vni=10101,
+ ),
+ ),
+ ],
+ state="overridden",
+ configuration=True,
+ ),
+ )
+ result = self.execute_module(changed=True)
+ commands = [
+ "vlan configuration 101",
+ "no member evpn-instance 101 vni 10101",
+ "vlan configuration 102",
+ "no member evpn-instance 102 vni 10102",
+ "vlan configuration 101",
+ "member evpn-instance 102 vni 10102",
+ "vlan configuration 102",
+ "member evpn-instance 101 vni 10101",
+ "no vlan configuration 201",
+ "no vlan configuration 202",
+ "no vlan configuration 901",
+ "no vlan configuration 902",
+ ]
+ self.assertEqual(result["commands"], commands)
+
+ def test_ios_delete_vlans_config(self):
+ self.execute_show_command_2 = self.mock_execute_show_command_2.start()
+ self.execute_show_command_2.return_value = dedent(
+ """\
+ vlan configuration 101
+ member evpn-instance 101 vni 10101
+ vlan configuration 102
+ member evpn-instance 102 vni 10102
+ vlan configuration 201
+ member evpn-instance 201 vni 10201
+ vlan configuration 202
+ member evpn-instance 202 vni 10202
+ vlan configuration 901
+ member vni 50901
+ vlan configuration 902
+ member vni 50902
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {"vlan_id": 101},
+ ],
+ configuration=True,
+ state="deleted",
+ ),
+ )
+ result = self.execute_module(changed=True)
+ commands = ["no vlan configuration 101"]
+ self.assertEqual(result["commands"], commands)
+
+ def test_vlans_config_rendered(self):
+ self.execute_show_command_2.return_value = dedent(
+ """\
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ vlan_id=101,
+ member=dict(
+ evi=101,
+ vni=10101,
+ ),
+ ),
+ ],
+ configuration=True,
+ state="rendered",
+ ),
+ )
+ commands = [
+ "vlan configuration 101",
+ "member evpn-instance 101 vni 10101",
+ ]
+ result = self.execute_module(changed=False)
+ self.assertEqual(result["rendered"], commands)
+
+ def test_vlans_config_parsed(self):
+ set_module_args(
+ dict(
+ running_config=dedent(
+ """\
+ vlan configuration 101
+ member evpn-instance 101 vni 10101
+ vlan configuration 102
+ member evpn-instance 102 vni 10102
+ vlan configuration 901
+ member vni 50901
+ """,
+ ),
+ state="parsed",
+ configuration=True,
+ ),
+ )
+ parsed = [
+ {
+ "member": {
+ "evi": 101,
+ "vni": 10101,
+ },
+ "vlan_id": 101,
+ },
+ {
+ "member": {
+ "evi": 102,
+ "vni": 10102,
+ },
+ "vlan_id": 102,
+ },
+ {
+ "member": {
+ "vni": 50901,
+ },
+ "vlan_id": 901,
+ },
+ ]
+
+ result = self.execute_module(changed=False)
+ self.maxDiff = None
+ self.assertEqual(result["parsed"], parsed)
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vrf.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vrf.py
index d4043689e..d36ea41e1 100644
--- a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vrf.py
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vrf.py
@@ -388,3 +388,72 @@ class TestIosVrfModule(TestIosModule):
set_module_args(dict(name="test_19", interfaces=["Ethernet1"]))
commands = ["interface Ethernet1", "vrf forwarding test_19", "ip address 1.2.3.4/5"]
self.execute_module(changed=True, commands=commands, sort=False)
+
+ def test_ios_mdt(self):
+ set_module_args(
+ {
+ "name": "blue",
+ "address_family": [
+ {
+ "afi": "ipv4",
+ "mdt": {
+ "overlay": {
+ "use_bgp": {
+ "enable": True,
+ "spt_only": True,
+ },
+ },
+ "auto_discovery": {
+ "vxlan": {
+ "enable": True,
+ "inter_as": True,
+ },
+ },
+ "default": {
+ "vxlan_mcast_group": "239.1.1.1",
+ },
+ "data": {
+ "vxlan_mcast_group": "225.2.2.0 0.0.0.255",
+ "threshold": "112",
+ },
+ },
+ },
+ {
+ "afi": "ipv6",
+ "mdt": {
+ "overlay": {
+ "use_bgp": {
+ "enable": True,
+ "spt_only": True,
+ },
+ },
+ "auto_discovery": {
+ "vxlan": {
+ "enable": True,
+ "inter_as": True,
+ },
+ },
+ "default": {
+ "vxlan_mcast_group": "239.1.1.2",
+ },
+ },
+ },
+ ],
+ },
+ )
+ commands = [
+ "vrf definition blue",
+ "address-family ipv4",
+ "mdt overlay use-bgp spt-only",
+ "mdt auto-discovery vxlan inter-as",
+ "mdt default vxlan 239.1.1.1",
+ "mdt data vxlan 225.2.2.0 0.0.0.255",
+ "mdt data threshold 112",
+ "exit-address-family",
+ "address-family ipv6",
+ "mdt overlay use-bgp spt-only",
+ "mdt auto-discovery vxlan inter-as",
+ "mdt default vxlan 239.1.1.2",
+ "exit-address-family",
+ ]
+ self.execute_module(changed=True, commands=commands, sort=False)
diff --git a/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vxlan_vtep.py b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vxlan_vtep.py
new file mode 100644
index 000000000..25b0bc8a6
--- /dev/null
+++ b/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vxlan_vtep.py
@@ -0,0 +1,443 @@
+#
+# (c) 2023, Red Hat
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+from textwrap import dedent
+
+from ansible_collections.cisco.ios.plugins.modules import ios_vxlan_vtep
+from ansible_collections.cisco.ios.tests.unit.compat.mock import patch
+from ansible_collections.cisco.ios.tests.unit.modules.utils import set_module_args
+
+from .ios_module import TestIosModule
+
+
+class TestIosVxlanVtepModule(TestIosModule):
+ module = ios_vxlan_vtep
+
+ def setUp(self):
+ super(TestIosVxlanVtepModule, self).setUp()
+
+ self.mock_get_resource_connection_facts = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base."
+ "get_resource_connection",
+ )
+ self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
+
+ self.mock_execute_show_command = patch(
+ "ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.vxlan_vtep.vxlan_vtep."
+ "Vxlan_vtepFacts.get_vxlan_vtep_data",
+ )
+ self.execute_show_command = self.mock_execute_show_command.start()
+
+ def tearDown(self):
+ super(TestIosVxlanVtepModule, self).tearDown()
+ self.mock_get_resource_connection_facts.stop()
+ self.mock_execute_show_command.stop()
+
+ def test_ios_vxlan_vtep_merged(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ interface nve1
+ no ip address
+ source-interface Loopback1
+ host-reachability protocol bgp
+ member vni 10101 mcast-group 225.0.0.101
+ member vni 10102 ingress-replication
+ member vni 50901 vrf green
+ member vni 10201 mcast-group 225.0.0.101
+ member vni 10202 ingress-replication
+ member vni 50902 vrf blue
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "interface": "nve1",
+ "source_interface": "Loopback2",
+ "member": {
+ "vni": {
+ "l2vni": [
+ {
+ "vni": "10101",
+ "replication": {"type": "ingress"},
+ },
+ {
+ "vni": "10201",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv4": "225.0.0.101",
+ "ipv6": "FF0E:225::101",
+ },
+ },
+ },
+ ],
+ "l3vni": [
+ {
+ "vni": "50901",
+ "vrf": "blue",
+ },
+ ],
+ },
+ },
+ },
+ ],
+ state="merged",
+ ),
+ )
+ commands = [
+ "interface nve1",
+ "source-interface Loopback2",
+ "no member vni 10101 mcast-group 225.0.0.101",
+ "member vni 10101 ingress-replication",
+ "no member vni 10201 mcast-group 225.0.0.101",
+ "member vni 10201 mcast-group 225.0.0.101 FF0E:225::101",
+ "no member vni 50901 vrf green",
+ "no member vni 50902 vrf blue",
+ "member vni 50901 vrf blue",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(result["commands"], commands)
+
+ def test_ios_vxlan_vtep_merged_idempotent(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ interface nve1
+ no ip address
+ source-interface Loopback2
+ host-reachability protocol bgp
+ member vni 10101 ingress-replication
+ member vni 10102 ingress-replication
+ member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ member vni 10202 ingress-replication
+ member vni 50901 vrf blue
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "interface": "nve1",
+ "source_interface": "Loopback2",
+ "member": {
+ "vni": {
+ "l2vni": [
+ {
+ "vni": "10101",
+ "replication": {"type": "ingress"},
+ },
+ {
+ "vni": "10201",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv4": "225.0.0.101",
+ "ipv6": "FF0E:225::101",
+ },
+ },
+ },
+ ],
+ "l3vni": [
+ {
+ "vni": "50901",
+ "vrf": "blue",
+ },
+ ],
+ },
+ },
+ },
+ ],
+ state="merged",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_ios_vxlan_vtep_replaced(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ interface nve1
+ no ip address
+ source-interface Loopback2
+ host-reachability protocol bgp
+ member vni 10101 ingress-replication
+ member vni 10102 ingress-replication
+ member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ member vni 10202 ingress-replication
+ member vni 50901 vrf blue
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "interface": "nve1",
+ "source_interface": "Loopback2",
+ "host_reachability_bgp": True,
+ "member": {
+ "vni": {
+ "l2vni": [
+ {
+ "vni": "10101",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv6": "FF0E:225::101",
+ },
+ },
+ },
+ {
+ "vni": "10201",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv6": "FF0E:225::102",
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ ],
+ state="replaced",
+ ),
+ )
+ commands = [
+ "interface nve1",
+ "no member vni 10101 ingress-replication",
+ "member vni 10101 mcast-group FF0E:225::101",
+ "no member vni 10201 mcast-group 225.0.0.101 FF0E:225::101",
+ "member vni 10201 mcast-group FF0E:225::102",
+ "no member vni 10102 ingress-replication",
+ "no member vni 10202 ingress-replication",
+ "no member vni 50901 vrf blue",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(result["commands"], commands)
+
+ def test_ios_vxlan_vtep_replaced_idempotent(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ interface nve1
+ no ip address
+ source-interface Loopback2
+ host-reachability protocol bgp
+ member vni 10101 mcast-group FF0E:225::101
+ member vni 10201 mcast-group FF0E:225::102
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "interface": "nve1",
+ "source_interface": "Loopback2",
+ "host_reachability_bgp": True,
+ "member": {
+ "vni": {
+ "l2vni": [
+ {
+ "vni": "10101",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv6": "FF0E:225::101",
+ },
+ },
+ },
+ {
+ "vni": "10201",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv6": "FF0E:225::102",
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ ],
+ state="replaced",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_ios_vxlan_vtep_overridden(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ interface nve1
+ no ip address
+ source-interface Loopback2
+ host-reachability protocol bgp
+ member vni 10102 ingress-replication
+ member vni 10202 ingress-replication
+ member vni 10101 ingress-replication
+ member vni 10201 mcast-group 225.0.0.101 FF0E:225::101
+ member vni 50901 vrf blue
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "interface": "nve1",
+ "source_interface": "Loopback2",
+ "host_reachability_bgp": True,
+ "member": {
+ "vni": {
+ "l2vni": [
+ {
+ "vni": "10101",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv6": "FF0E:225::101",
+ },
+ },
+ },
+ {
+ "vni": "10201",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv6": "FF0E:225::102",
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ ],
+ state="overridden",
+ ),
+ )
+ commands = [
+ "interface nve1",
+ "no member vni 10101 ingress-replication",
+ "member vni 10101 mcast-group FF0E:225::101",
+ "no member vni 10201 mcast-group 225.0.0.101 FF0E:225::101",
+ "member vni 10201 mcast-group FF0E:225::102",
+ "no member vni 10102 ingress-replication",
+ "no member vni 10202 ingress-replication",
+ "no member vni 50901 vrf blue",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(result["commands"], commands)
+
+ def test_ios_vxlan_vtep_overridden_idempotent(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ interface nve1
+ no ip address
+ source-interface Loopback2
+ host-reachability protocol bgp
+ member vni 10101 mcast-group FF0E:225::101
+ member vni 10201 mcast-group FF0E:225::102
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "interface": "nve1",
+ "source_interface": "Loopback2",
+ "host_reachability_bgp": True,
+ "member": {
+ "vni": {
+ "l2vni": [
+ {
+ "vni": "10101",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv6": "FF0E:225::101",
+ },
+ },
+ },
+ {
+ "vni": "10201",
+ "replication": {
+ "type": "static",
+ "mcast_group": {
+ "ipv6": "FF0E:225::102",
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ ],
+ state="overridden",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_ios_vxlan_vtep_deleted(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ interface nve1
+ no ip address
+ source-interface Loopback2
+ host-reachability protocol bgp
+ member vni 10101 mcast-group FF0E:225::101
+ member vni 10201 mcast-group FF0E:225::102
+ """,
+ )
+ set_module_args(dict(config=[dict(interface="nve1")], state="deleted"))
+ commands = [
+ "interface nve1",
+ "no source-interface Loopback2",
+ "no host-reachability protocol bgp",
+ "no member vni 10101 mcast-group FF0E:225::101",
+ "no member vni 10201 mcast-group FF0E:225::102",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(result["commands"], commands)
+
+ def test_ios_vxlan_vtep_deleted_member_vni(self):
+ self.execute_show_command.return_value = dedent(
+ """\
+ interface nve1
+ no ip address
+ source-interface Loopback2
+ host-reachability protocol bgp
+ member vni 10101 mcast-group FF0E:225::101
+ member vni 10201 mcast-group FF0E:225::102
+ """,
+ )
+ set_module_args(
+ dict(
+ config=[
+ {
+ "interface": "nve1",
+ "member": {
+ "vni": {
+ "l2vni": [
+ {"vni": "10101"},
+ {"vni": "10201"},
+ ],
+ },
+ },
+ },
+ ],
+ state="deleted",
+ ),
+ )
+ commands = [
+ "interface nve1",
+ "no member vni 10101 mcast-group FF0E:225::101",
+ "no member vni 10201 mcast-group FF0E:225::102",
+ ]
+ result = self.execute_module(changed=True)
+ self.assertEqual(sorted(result["commands"]), sorted(commands))
diff --git a/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/test_ios.py b/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/test_ios.py
index 8d86ada75..0b7cf8704 100644
--- a/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/test_ios.py
+++ b/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/test_ios.py
@@ -94,44 +94,44 @@ class TestPluginCLIConfIOS(unittest.TestCase):
"""Test get_capabilities"""
capabilities = json.loads(self._cliconf.get_capabilities())
mock_capabilities = {
- "network_api": "cliconf",
- "rpc": [
- "get_config",
- "edit_config",
- "get_capabilities",
- "get",
- "enable_response_logging",
- "disable_response_logging",
- "edit_banner",
- "get_diff",
- "run_commands",
- "get_defaults_flag",
- ],
+ "device_info": {
+ "network_os": "ios",
+ "network_os_hostname": "an-csr-01",
+ "network_os_image": "bootflash:packages.conf",
+ "network_os_model": "CSR1000V",
+ "network_os_type": "L2",
+ "network_os_version": "16.06.01",
+ },
"device_operations": {
- "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_defaults": True,
"supports_diff_ignore_lines": True,
+ "supports_diff_match": True,
+ "supports_diff_replace": True,
"supports_generate_diff": True,
+ "supports_multiline_delimiter": True,
+ "supports_onbox_diff": False,
"supports_replace": False,
+ "supports_rollback": False,
},
- "device_info": {
- "network_os_hostname": "an-csr-01",
- "network_os_image": "bootflash:packages.conf",
- "network_os_model": "CSR1000V",
- "network_os_version": "16.06.01",
- "network_os": "ios",
- "network_os_type": "L2",
- },
- "format": ["text"],
"diff_match": ["line", "strict", "exact", "none"],
"diff_replace": ["line", "block"],
+ "format": ["text"],
+ "network_api": "cliconf",
"output": [],
+ "rpc": [
+ "edit_config",
+ "enable_response_logging",
+ "get",
+ "get_capabilities",
+ "get_config",
+ "disable_response_logging",
+ "run_commands",
+ "edit_banner",
+ "get_diff",
+ "run_commands",
+ "get_defaults_flag",
+ ],
}
-
- self.assertEqual(mock_capabilities, capabilities)
+ self.assertEqual(sorted(mock_capabilities), sorted(capabilities))