From 96d6051cf8b1a12f863607a9d536668899288f10 Mon Sep 17 00:00:00 2001 From: Ruchi Pakhle Date: Thu, 5 Dec 2024 15:55:30 +0530 Subject: [PATCH] updates --- .../fragments/add_vrf_address_family.yaml | 3 + .../vrf_address_family/vrf_address_family.py | 1524 +++++++++++------ .../ios/rm_templates/vrf_address_family.py | 839 +++++++++ plugins/modules/ios_vrf_address_family.py | 55 +- 4 files changed, 1924 insertions(+), 497 deletions(-) create mode 100644 changelogs/fragments/add_vrf_address_family.yaml diff --git a/changelogs/fragments/add_vrf_address_family.yaml b/changelogs/fragments/add_vrf_address_family.yaml new file mode 100644 index 000000000..b001b048a --- /dev/null +++ b/changelogs/fragments/add_vrf_address_family.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - Adds a new module `ios_vrf_address_family` to manage VRFs address families on Cisco IOS devices. \ No newline at end of file diff --git a/plugins/module_utils/network/ios/argspec/vrf_address_family/vrf_address_family.py b/plugins/module_utils/network/ios/argspec/vrf_address_family/vrf_address_family.py index 6654e67f9..fa697cf2d 100644 --- a/plugins/module_utils/network/ios/argspec/vrf_address_family/vrf_address_family.py +++ b/plugins/module_utils/network/ios/argspec/vrf_address_family/vrf_address_family.py @@ -201,7 +201,7 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 "type": "dict", "options": { "number": {"type": "int"}, - "immediate_swich": { + "immediate_switch": { "type": "bool" }, "list": { @@ -210,7 +210,9 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 "access_list_number": { "type": "int" }, - "name": {"type": "str"}, + "access_list_name": { + "type": "str" + }, }, }, }, @@ -221,7 +223,9 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 "access_list_number": { "type": "int" }, - "name": {"type": "str"}, + "access_list_name": { + "type": "str" + }, }, }, "threshold": {"type": "int"}, @@ -236,8 +240,8 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 "direct": {"type": "bool"}, "log_reuse": {"type": "bool"}, "mode": { - "type": "bool", - "choices": ["gre", "GRE"], + "type": "dict", + "options": {"gre": {"type": "bool"}}, }, "mtu": {"type": "int"}, "overlay": { @@ -247,16 +251,10 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 "type": "dict", "options": { "shared_tree_prune_delay": { - "type": "dict", - "options": { - "delay": {"type": "int"} - }, + "type": "int" }, "source_tree_prune_delay": { - "type": "dict", - "options": { - "delay": {"type": "int"} - }, + "type": "int" }, }, }, @@ -574,193 +572,290 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 "type": "dict", "options": { "name": {"type": "str"}, - "global": { + "multicast": { "type": "dict", "options": { - "multicast": { + "all": { "type": "dict", "options": { - "all": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, - }, - "bgp": { - "type": "dict", - "options": { - "as_number": { - "type": "int" - }, - "route_map": { - "type": "str" - }, - }, + "route_map": { + "type": "str" + } + }, + }, + "bgp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" }, - "eigrp": { - "type": "dict", - "options": { - "as_number": { - "type": "int" - }, - "route_map": { - "type": "str" - }, - }, + "route_map": { + "type": "str" }, - "isis": { - "type": "dict", - "options": { - "iso_tag": { - "type": "str" - }, - "route_map": { - "type": "str" - }, - }, + }, + }, + "eigrp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" }, - "mobile": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, + "route_map": { + "type": "str" }, - "odr": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, + }, + }, + "isis": { + "type": "dict", + "options": { + "iso_tag": { + "type": "str" }, - "ospf": { - "type": "dict", - "options": { - "process_id": { - "type": "int" - }, - "route_map": { - "type": "str" - }, - }, + "route_map": { + "type": "str" }, - "rip": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, + }, + }, + "mobile": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "odr": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "ospf": { + "type": "dict", + "options": { + "process_id": { + "type": "int" }, - "static": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, + "route_map": { + "type": "str" }, - "topology": { + }, + }, + "rip": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "static": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "topology": { + "type": "dict", + "options": { + "base": { "type": "dict", "options": { - "base": { + "all": { "type": "dict", "options": { - "all": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, + "route_map": { + "type": "str" + } + }, + }, + "bgp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" }, - "bgp": { - "type": "dict", - "options": { - "as_number": { - "type": "int" - }, - "route_map": { - "type": "str" - }, - }, + "route_map": { + "type": "str" }, - "eigrp": { - "type": "dict", - "options": { - "as_number": { - "type": "int" - }, - "route_map": { - "type": "str" - }, - }, + }, + }, + "eigrp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" }, - "isis": { - "type": "dict", - "options": { - "iso_tag": { - "type": "str" - }, - "route_map": { - "type": "str" - }, - }, + "route_map": { + "type": "str" }, - "mobile": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, + }, + }, + "isis": { + "type": "dict", + "options": { + "iso_tag": { + "type": "str" }, - "odr": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, + "route_map": { + "type": "str" }, - "ospf": { - "type": "dict", - "options": { - "process_id": { - "type": "int" - }, - "route_map": { - "type": "str" - }, - }, - }, - "rip": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, + }, + }, + "mobile": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "odr": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "ospf": { + "type": "dict", + "options": { + "process_id": { + "type": "int" }, - "static": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, + "route_map": { + "type": "str" }, }, - } + }, + "rip": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "static": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, }, + } + }, + }, + }, + }, + "unicast": { + "type": "dict", + "options": { + "all": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "bgp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" + }, + "route_map": { + "type": "str" }, }, }, - "unicast": { + "connected": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "eigrp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "isis": { + "type": "dict", + "options": { + "iso_tag": { + "type": "str" + }, + "route_map": { + "type": "str" + }, + }, + }, + "mobile": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "odr": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "ospf": { + "type": "dict", + "options": { + "process_id": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "rip": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "static": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + }, + }, + "global": { + "type": "dict", + "options": { + "multicast": { "type": "dict", "options": { "all": { @@ -782,14 +877,6 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 }, }, }, - "connected": { - "type": "dict", - "options": { - "route_map": { - "type": "str" - } - }, - }, "eigrp": { "type": "dict", "options": { @@ -855,332 +942,356 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 } }, }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - "route_replicate_distance": { - "type": "dict", - "options": { - "from_config": { - "type": "dict", - "options": { - "multicast": { - "type": "dict", - "options": { - "distance": {"type": "int"}, - "topology": { - "type": "dict", - "options": { - "base": { - "type": "dict", - "options": { - "distance": { - "type": "int" - } - }, - } - }, - }, - }, - }, - "unicast": { - "type": "dict", - "options": { - "distance": {"type": "int"}, - "topology": { - "type": "dict", - "options": { - "base": { - "type": "dict", - "options": { - "distance": { - "type": "int" - } - }, - } - }, - }, - }, - }, - }, - } - }, - }, - "route_target": { - "type": "dict", - "options": { - "export": {"type": "str"}, - "stitching": {"type": "bool"}, - "import_config": {"type": "str"}, - "both": {"type": "str"}, - }, - }, - "snmp": { - "type": "dict", - "options": { - "context": { - "type": "dict", - "options": { - "name": {"type": "str"}, - "community": { - "type": "dict", - "options": { - "name": {"type": "str"}, - "access_number": {"type": "int"}, - "access_name": {"type": "str"}, - "ipv6": {"type": "str"}, - "mode": { - "type": "str", - "choices": ["ro", "rw"], - }, - }, - }, - "user": { - "type": "dict", - "options": { - "name": {"type": "str"}, - "access": { - "type": "dict", - "options": { - "number": {"type": "int"}, - "name": {"type": "str"}, - "ipv6": {"type": "str"}, - }, - }, - "auth": { - "type": "dict", - "options": { - "md5": { - "type": "dict", - "options": { - "password": { - "type": "str" - }, - "access": { - "type": "dict", - "options": { - "number": { - "type": "int" - }, - "name": { - "type": "str" - }, - "ipv6": { - "type": "str" - }, - }, - }, - "priv": { + "topology": { "type": "dict", "options": { - "3des": { + "base": { "type": "dict", "options": { - "password": { - "type": "str" + "all": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, }, - "access": { + "bgp": { "type": "dict", "options": { - "number": { + "as_number": { "type": "int" }, - "name": { - "type": "str" - }, - "ipv6": { + "route_map": { "type": "str" }, }, }, - }, - }, - "des": { - "type": "dict", - "options": { - "password": { - "type": "str" - }, - "access": { + "eigrp": { "type": "dict", "options": { - "number": { + "as_number": { "type": "int" }, - "name": { - "type": "str" - }, - "ipv6": { + "route_map": { "type": "str" }, }, }, - }, - }, - "aes": { - "type": "dict", - "options": { - 128: { + "isis": { "type": "dict", "options": { - "password": { + "iso_tag": { "type": "str" }, - "access": { - "type": "dict", - "options": { - "number": { - "type": "int" - }, - "name": { - "type": "str" - }, - "ipv6": { - "type": "str" - }, - }, + "route_map": { + "type": "str" }, }, }, - 192: { + "mobile": { "type": "dict", "options": { - "password": { + "route_map": { "type": "str" - }, - "access": { - "type": "dict", - "options": { - "number": { - "type": "int" - }, - "name": { - "type": "str" - }, - "ipv6": { - "type": "str" - }, - }, - }, + } }, }, - 256: { + "odr": { "type": "dict", "options": { - "password": { + "route_map": { "type": "str" - }, - "access": { - "type": "dict", - "options": { - "number": { - "type": "int" - }, - "name": { - "type": "str" - }, - "ipv6": { - "type": "str" - }, - }, - }, + } }, }, - }, - }, - "des56": { - "type": "dict", - "options": { - "password": { - "type": "str" - }, - "access": { + "ospf": { "type": "dict", "options": { - "number": { + "process_id": { "type": "int" }, - "name": { + "route_map": { "type": "str" }, - "ipv6": { + }, + }, + "rip": { + "type": "dict", + "options": { + "route_map": { "type": "str" - }, + } + }, + }, + "static": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } }, }, }, - }, + } }, }, - "encrypted": { - "type": "bool" - }, }, }, - "sha": { + "unicast": { "type": "dict", "options": { - "password": { - "type": "str" + "all": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, }, - "access": { + "bgp": { "type": "dict", "options": { - "number": { + "as_number": { "type": "int" }, - "name": { + "route_map": { "type": "str" }, - "ipv6": { + }, + }, + "connected": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "eigrp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" + }, + "route_map": { "type": "str" }, }, }, - "priv": { + "isis": { "type": "dict", "options": { - "3des": { - "type": "dict", - "options": { - "password": { - "type": "str" - }, - "access": { - "type": "dict", - "options": { - "number": { - "type": "int" - }, - "name": { - "type": "str" - }, - "ipv6": { - "type": "str" - }, - }, - }, - }, + "iso_tag": { + "type": "str" }, - "des": { - "type": "dict", - "options": { - "password": { - "type": "str" - }, - "access": { - "type": "dict", - "options": { - "number": { - "type": "int" - }, + "route_map": { + "type": "str" + }, + }, + }, + "mobile": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "odr": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "ospf": { + "type": "dict", + "options": { + "process_id": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "rip": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "static": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + "route_replicate_distance": { + "type": "dict", + "options": { + "from_config": { + "type": "dict", + "options": { + "multicast": { + "type": "dict", + "options": { + "distance": {"type": "int"}, + "topology": { + "type": "dict", + "options": { + "base": { + "type": "dict", + "options": { + "distance": { + "type": "int" + } + }, + } + }, + }, + }, + }, + "unicast": { + "type": "dict", + "options": { + "distance": {"type": "int"}, + "topology": { + "type": "dict", + "options": { + "base": { + "type": "dict", + "options": { + "distance": { + "type": "int" + } + }, + } + }, + }, + }, + }, + }, + } + }, + }, + "route_target": { + "type": "dict", + "options": { + "export": {"type": "str"}, + "stitching": {"type": "bool"}, + "import_config": {"type": "str"}, + "both": {"type": "str"}, + }, + }, + "snmp": { + "type": "dict", + "options": { + "context": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "community": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "access_number": {"type": "int"}, + "access_name": {"type": "str"}, + "ipv6": {"type": "str"}, + "mode": { + "type": "str", + "choices": ["ro", "rw"], + }, + }, + }, + "user": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "access": { + "type": "dict", + "options": { + "number": {"type": "int"}, + "name": {"type": "str"}, + "ipv6": {"type": "str"}, + }, + }, + "auth": { + "type": "dict", + "options": { + "md5": { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, + "name": { + "type": "str" + }, + "ipv6": { + "type": "str" + }, + }, + }, + "priv": { + "type": "dict", + "options": { + "3des": { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, + "name": { + "type": "str" + }, + "ipv6": { + "type": "str" + }, + }, + }, + }, + }, + "des": { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, "name": { "type": "str" }, @@ -1286,54 +1397,221 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 }, }, }, + "encrypted": { + "type": "bool" + }, }, }, - }, - }, - "credential": {"type": "str"}, - "encrypted": {"type": "bool"}, - }, - }, - }, - } - }, - }, - "topology": { - "type": "dict", - "options": { - "base": {"type": "str"}, - "name": {"type": "str"}, - "all_interfaces": {"type": "bool"}, - "bgp": { - "type": "dict", - "options": { - "next_hop": { - "type": "dict", - "options": { - "loopback": {"type": "int"} - }, - } - }, - }, - "export": { - "type": "dict", - "options": { - "map": {"type": "str"}, - "ipv4": { - "type": "dict", - "options": { - "multicast": { - "type": "dict", - "options": { - "prefix": {"type": "int"}, - "map": {"type": "str"}, - }, - }, - "unicast": { - "type": "dict", - "options": { - "prefix": {"type": "int"}, - "map": {"type": "str"}, + "sha": { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, + "name": { + "type": "str" + }, + "ipv6": { + "type": "str" + }, + }, + }, + "priv": { + "type": "dict", + "options": { + "3des": { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, + "name": { + "type": "str" + }, + "ipv6": { + "type": "str" + }, + }, + }, + }, + }, + "des": { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, + "name": { + "type": "str" + }, + "ipv6": { + "type": "str" + }, + }, + }, + }, + }, + "aes": { + "type": "dict", + "options": { + 128: { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, + "name": { + "type": "str" + }, + "ipv6": { + "type": "str" + }, + }, + }, + }, + }, + 192: { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, + "name": { + "type": "str" + }, + "ipv6": { + "type": "str" + }, + }, + }, + }, + }, + 256: { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, + "name": { + "type": "str" + }, + "ipv6": { + "type": "str" + }, + }, + }, + }, + }, + }, + }, + "des56": { + "type": "dict", + "options": { + "password": { + "type": "str" + }, + "access": { + "type": "dict", + "options": { + "number": { + "type": "int" + }, + "name": { + "type": "str" + }, + "ipv6": { + "type": "str" + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + "credential": {"type": "str"}, + "encrypted": {"type": "bool"}, + }, + }, + }, + } + }, + }, + "topology": { + "type": "dict", + "options": { + "base": {"type": "str"}, + "name": {"type": "str"}, + "all_interfaces": {"type": "bool"}, + "bgp": { + "type": "dict", + "options": { + "next_hop": { + "type": "dict", + "options": { + "loopback": {"type": "int"} + }, + } + }, + }, + "export": { + "type": "dict", + "options": { + "map": {"type": "str"}, + "ipv4": { + "type": "dict", + "options": { + "multicast": { + "type": "dict", + "options": { + "prefix": {"type": "int"}, + "map": {"type": "str"}, + }, + }, + "unicast": { + "type": "dict", + "options": { + "prefix": {"type": "int"}, + "map": {"type": "str"}, "allow_evpn": { "type": "bool" }, @@ -2081,6 +2359,286 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 "type": "dict", "options": { "name": {"type": "str"}, + "multicast": { + "type": "dict", + "options": { + "all": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "bgp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "eigrp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "isis": { + "type": "dict", + "options": { + "iso_tag": { + "type": "str" + }, + "route_map": { + "type": "str" + }, + }, + }, + "mobile": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "odr": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "ospf": { + "type": "dict", + "options": { + "process_id": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "rip": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "static": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "topology": { + "type": "dict", + "options": { + "base": { + "type": "dict", + "options": { + "all": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "bgp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "eigrp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "isis": { + "type": "dict", + "options": { + "iso_tag": { + "type": "str" + }, + "route_map": { + "type": "str" + }, + }, + }, + "mobile": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "odr": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "ospf": { + "type": "dict", + "options": { + "process_id": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "rip": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "static": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + }, + } + }, + }, + }, + }, + "unicast": { + "type": "dict", + "options": { + "all": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "bgp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "connected": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "eigrp": { + "type": "dict", + "options": { + "as_number": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "isis": { + "type": "dict", + "options": { + "iso_tag": { + "type": "str" + }, + "route_map": { + "type": "str" + }, + }, + }, + "mobile": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "odr": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "ospf": { + "type": "dict", + "options": { + "process_id": { + "type": "int" + }, + "route_map": { + "type": "str" + }, + }, + }, + "rip": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + "static": { + "type": "dict", + "options": { + "route_map": { + "type": "str" + } + }, + }, + }, + }, "global": { "type": "dict", "options": { diff --git a/plugins/module_utils/network/ios/rm_templates/vrf_address_family.py b/plugins/module_utils/network/ios/rm_templates/vrf_address_family.py index 8fb904522..fb17a5723 100644 --- a/plugins/module_utils/network/ios/rm_templates/vrf_address_family.py +++ b/plugins/module_utils/network/ios/rm_templates/vrf_address_family.py @@ -589,6 +589,845 @@ def __init__(self, lines=None, module=None): }, }, }, + { + "name": "mdt.data.ingress_replication.number", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\sdata\singress-replication\s(?P\d+) + $""", re.VERBOSE, + ), + "setval": "mdt data ingress-replication {{ mdt.data.ingress_replication.number }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "data": { + "ingress_replication": { + "number": "{{ mdt_data_ingress_replication_number }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "mdt.data.ingress_replication.immediate_switch", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\sdata\singress-replication\simmediate-switch + $""", re.VERBOSE, + ), + "setval": "mdt data ingress-replication immediate-switch", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "data": { + "ingress_replication": { + "immediate_switch": "{{ true }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "mdt.data.ingress_replication.number.immediate_switch", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\sdata\singress-replication\s(?P\d+)\simmediate-switch + $""", re.VERBOSE, + ), + "setval": "mdt data ingress-replication {{ mdt.data.ingress_replication.number }} immediate-switch", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "data": { + "ingress_replication": { + "number": "{{ mdt_data_ingress_replication_number }}", + "immediate_switch": "{{ true }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "mdt.data.list.access_list", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\sdata\slist\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "mdt data list {{ mdt.data.list.access_list }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "data": { + "list": { + "access_list_number": "{{ mdt_data_list_access_list }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "mdt.data.list.access_list_name", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\sdata\slist\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "mdt data list {{ mdt.data.list.access_list_name }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "data": { + "list": { + "access_list_name": "{{ mdt_data_list_access_list_name }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "mdt.data.threshold", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\sdata\sthreshold\s(?P\d+) + $""", re.VERBOSE, + ), + "setval": "mdt data threshold {{ mdt.data.threshold }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "data": { + "threshold": "{{ mdt_data_threshold }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "mdt.default_ingress_replication", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\sdefault\singress-replication + $""", re.VERBOSE, + ), + "setval": "mdt default ingress-replication", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "default": { + "ingress_replication": "{{ true }}", + } + }, + }, + }, + }, + }, + }, + { + "name": "mdt.direct", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\sdirect + $""", re.VERBOSE, + ), + "setval": "mdt direct", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "direct": "{{ true }}", + }, + }, + }, + }, + }, + }, + { + "name": "mdt.log_reuse", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\slog-reuse + $""", re.VERBOSE, + ), + "setval": "mdt log-reuse", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "log_reuse": "{{ true }}", + }, + }, + }, + }, + }, + }, + { + "name": "mdt.mode.gre", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\smode\sgre + $""", re.VERBOSE, + ), + "setval": "mdt mode gre", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "mode": { + "gre": "{{ true }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "mdt.mtu.value", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\smtu\s(?P\d+) + $""", re.VERBOSE, + ), + "setval": "mdt mtu {{ mdt.mtu.value }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "mtu": "{{ mtu_value }}", + }, + }, + }, + }, + }, + }, + { + "name": "mdt.overlay.bgp.shared_tree_prune_delay", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\soverlay\sbgp\sshared-tree-prune-delay\s(?P\d+) + $""", re.VERBOSE, + ), + "setval": "mdt overlay bgp shared-tree-prune-delay {{ mdt.overlay.bgp.shared_tree_prune_delay }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "overlay": { + "bgp": { + "shared_tree_prune_delay": "{{ shared_tree_prune_delay }}", + } + } + }, + }, + }, + }, + }, + }, + { + "name": "mdt.overlay.bgp.source_tree_prune_delay", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\soverlay\sbgp\ssource-tree-prune-delay\s(?P\d+) + $""", re.VERBOSE, + ), + "setval": "mdt overlay bgp source-tree-prune-delay {{ mdt.overlay.bgp.source_tree_prune_delay }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "overlay": { + "bgp": { + "source_tree_prune_delay": "{{ source_tree_prune_delay }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "mdt.overlay.use_bgp_spt_only", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\soverlay\suse-bgp\sspt-only + $""", re.VERBOSE, + ), + "setval": "mdt overlay use-bgp spt-only", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "overlay": { + "use_bgp": { + "spt_only": "{{ true }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "mdt.partitioned.ingress_replication", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\spartitioned\singress-replication + $""", re.VERBOSE, + ), + "setval": "mdt partitioned ingress-replication", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "partitioned": { + "ingress_replication": "{{ true }}", + } + }, + }, + }, + }, + }, + }, + { + "name": "mdt.strict_rpf_interface", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+mdt\sstrict-rpf\sinterface + $""", re.VERBOSE, + ), + "setval": "mdt strict-rpf interface", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "mdt": { + "strict_rpf": { + "interface": "{{ true }}", + } + }, + }, + }, + }, + }, + }, + { + "name": "protection.local_prefixes", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+protection\slocal-prefixes + $""", re.VERBOSE, + ), + "setval": "protection local-prefixes", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "protection": { + "local_prefixes": "{{ true }}", + } + }, + }, + }, + }, + }, + { + "name": "route_replicate.recursion_policy.destination", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\srecursion-policy\sdestination + $""", re.VERBOSE, + ), + "setval": "route-replicate recursion-policy destination", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "recursion_policy": { + "destination": "{{ true }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.all.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\sall\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast all route-map {{ route_replicate.from.vrf.vrf_name.unicast.all.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "all": { + "route_map": "{{ route_map }}", + } + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.bgp.asn.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\sbgp\s(?P\d+)\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast bgp {{ route_replicate.from.vrf.vrf_name.unicast.bgp.asn }} route-map {{ route_replicate.from.vrf.vrf_name.unicast.bgp.asn.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "bgp": { + "as_number": "{{ asn }}", + "route_map": "{{ route_map }}", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.connected.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\sconnected\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast connected route-map {{ route_replicate.from.vrf.vrf_name.unicast.connected.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "connected": { + "route_map": "{{ route_map }}", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.eigrp.asn.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\seigrp\s(?P\d+)\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast eigrp {{ route_replicate.from.vrf.vrf_name.unicast.eigrp.asn }} route-map {{ route_replicate.from.vrf.vrf_name.unicast.eigrp.asn.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "eigrp": { + "as_number": "{{ asn }}", + "route_map": "{{ route_map }}", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.isis.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\sisis\s(?P\S+)\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast isis {{ route_replicate.from.vrf.vrf_name.unicast.isis.tag }} route-map {{ route_replicate.from.vrf.vrf_name.unicast.isis.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "isis": { + "iso_tag": "{{ tag }}", + "route_map": "{{ route_map }}", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.mobile.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\smobile\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast mobile route-map {{ route_replicate.from.vrf.vrf_name.unicast.mobile.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "mobile": { + "route_map": "{{ route_map }}", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.odr.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\sodr\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast odr route-map {{ route_replicate.from.vrf.vrf_name.unicast.odr.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "odr": { + "route_map": "{{ route_map }}", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.ospf.id.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\sospf\s(?P\d+)\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast ospf {{ route_replicate.from.vrf.vrf_name.unicast.ospf.id }} route-map {{ route_replicate.from.vrf.vrf_name.unicast.ospf.id.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "ospf": { + "process_id": "{{ process_id }}", + "route_map": "{{ route_map }}", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.rip.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\srip\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast rip route-map {{ route_replicate.from.vrf.vrf_name.unicast.rip.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "rip": { + "route_map": "{{ route_map }}", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_replicate.from.vrf.vrf_name.unicast.static.route_map", + "getval": re.compile( + r""" + ^vrf\sdefinition\s(?P\S+) + (?P\s+address-family\s(?P\S+)\s(?P\S+)) + \s+route-replicate\sfrom\svrf\s(?P\S+)\sunicast\sstatic\sroute-map\s(?P\S+) + $""", re.VERBOSE, + ), + "setval": "route-replicate from vrf {{ route_replicate.from.vrf.vrf_name }} unicast static route-map {{ route_replicate.from.vrf.vrf_name.unicast.static.route_map }}", + "result": { + '{{ name }}': { + 'name': '{{ name }}', + "address_families": { + '{{"address_families_" + afi + "_" + safi }}': { + "afi": "{{ afi }}", + "safi": "{{ safi }}", + "route_replicate": { + "from_config": { + "vrf": { + "name": "{{ vrf_name }}", + "unicast": { + "static": { + "route_map": "{{ route_map }}", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, { "name": "route_target.export", "getval": re.compile( diff --git a/plugins/modules/ios_vrf_address_family.py b/plugins/modules/ios_vrf_address_family.py index bdd77eb95..f8a5c566a 100644 --- a/plugins/modules/ios_vrf_address_family.py +++ b/plugins/modules/ios_vrf_address_family.py @@ -210,7 +210,7 @@ number: description: Number of data MDT type: int - immediate_swich: + immediate_switch: description: Switch immediately to Data MDT tree type: bool list: &list @@ -220,7 +220,7 @@ access_list_number: description: Access-list number type: int - name: + access_list_name: description: IP Named Extended Access list type: str list: *list @@ -242,8 +242,11 @@ type: bool mode: description: The type of encapsulation - type: bool - choices: ['gre', 'GRE'] + type: dict + suboptions: + gre: + description: GRE encapsulation + type: bool mtu: description: The MTU type: int @@ -257,18 +260,10 @@ suboptions: shared_tree_prune_delay: description: Delay before shared tree is pruned at C-RP PE - type: dict - suboptions: - delay: - description: Delay (in secs) - type: int + type: int source_tree_prune_delay: description: Delay before source tree is pruned at C-S PE - type: dict - suboptions: - delay: - description: Delay (in secs) - type: int + type: int use_bgp: description: Use BGP for MDT overlay signaling type: dict @@ -417,6 +412,38 @@ name: description: Source VRF name type: str + multicast: + description: Multicast SAFI + type: dict + suboptions: + all: *all + bgp: *bgp + eigrp: *eigrp + isis: *isis + mobile: *mobile + odr: *odr + ospf: *ospf + rip: *rip + static: *static + topology: *topology + unicast: + description: Unicast SAFI + type: dict + suboptions: + all: *all + bgp: *bgp + connected: + description: Connected routes + type: dict + suboptions: + route_map: *route_map + eigrp: *eigrp + isis: *isis + mobile: *mobile + odr: *odr + ospf: *ospf + rip: *rip + static: *static global: description: global VRF type: dict