diff --git a/README.md b/README.md index 58187e9ec..4c3094111 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,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_vrf_address_family](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_vrf_address_family_module.rst)|Resource module to configure VRF definitions. [cisco.ios.ios_vrf_global](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_vrf_global_module.rst)|Resource module to configure global VRF definitions. [cisco.ios.ios_vrf_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_vrf_interfaces_module.rst)|Manages VRF configuration on interfaces. [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. diff --git a/changelogs/fragments/add_vrf_address_family.yaml b/changelogs/fragments/add_vrf_address_family.yaml index b001b048a..ccab55287 100644 --- a/changelogs/fragments/add_vrf_address_family.yaml +++ b/changelogs/fragments/add_vrf_address_family.yaml @@ -1,3 +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 + - Adds a new module `ios_vrf_address_family` to manage VRFs address families on Cisco IOS devices. 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 dfc2c09d4..8a26132b4 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 @@ -5,6 +5,7 @@ from __future__ import absolute_import, division, print_function + __metaclass__ = type ############################################# @@ -29,8 +30,7 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 - """The arg spec for the ios_vrf_address_family module - """ + """The arg spec for the ios_vrf_address_family module""" argument_spec = { "config": { @@ -53,7 +53,7 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 "next_hop": { "type": "dict", "options": {"loopback": {"type": "int"}}, - } + }, }, }, "export": { @@ -119,12 +119,12 @@ class Vrf_address_familyArgs(object): # pylint: disable=R0903 "reinstall": { "type": "dict", "options": { - "threshold": {"type": "int"} + "threshold": {"type": "int"}, }, }, "warning_only": {"type": "bool"}, }, - } + }, }, }, "inter_as_hybrid": { diff --git a/plugins/module_utils/network/ios/config/vrf_address_family/vrf_address_family.py b/plugins/module_utils/network/ios/config/vrf_address_family/vrf_address_family.py index 88f66b872..535ca6458 100644 --- a/plugins/module_utils/network/ios/config/vrf_address_family/vrf_address_family.py +++ b/plugins/module_utils/network/ios/config/vrf_address_family/vrf_address_family.py @@ -7,6 +7,7 @@ from __future__ import absolute_import, division, print_function + __metaclass__ = type """ @@ -18,15 +19,14 @@ """ from ansible.module_utils.six import iteritems -from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( - dict_merge, -) from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module import ( ResourceModule, ) -from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( - Facts, +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + dict_merge, ) + +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import Facts from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.vrf_address_family import ( Vrf_address_familyTemplate, ) @@ -59,7 +59,7 @@ def __init__(self, module): ] def execute_module(self): - """ Execute the module + """Execute the module :rtype: A dictionary :returns: The result from module execution @@ -70,8 +70,8 @@ def execute_module(self): return self.result def generate_commands(self): - """ Generate configuration commands to send based on - want, have and desired state. + """Generate configuration commands to send based on + want, have and desired state. """ wantd = self.want haved = self.have diff --git a/plugins/module_utils/network/ios/facts/facts.py b/plugins/module_utils/network/ios/facts/facts.py index fb326ca1b..57c03e639 100644 --- a/plugins/module_utils/network/ios/facts/facts.py +++ b/plugins/module_utils/network/ios/facts/facts.py @@ -99,6 +99,9 @@ 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.vrf_address_family.vrf_address_family import ( + Vrf_address_familyFacts, +) from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.vrf_global.vrf_global import ( Vrf_globalFacts, ) @@ -108,9 +111,6 @@ from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.vxlan_vtep.vxlan_vtep import ( Vxlan_vtepFacts, ) -from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.vrf_address_family.vrf_address_family import ( - Vrf_address_familyFacts, -) FACT_LEGACY_SUBSETS = dict( diff --git a/plugins/module_utils/network/ios/facts/vrf_address_family/vrf_address_family.py b/plugins/module_utils/network/ios/facts/vrf_address_family/vrf_address_family.py index 046caf6c3..4f5404b1e 100644 --- a/plugins/module_utils/network/ios/facts/vrf_address_family/vrf_address_family.py +++ b/plugins/module_utils/network/ios/facts/vrf_address_family/vrf_address_family.py @@ -5,6 +5,7 @@ from __future__ import absolute_import, division, print_function + __metaclass__ = type """ @@ -15,29 +16,28 @@ """ # 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 import utils + +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.vrf_address_family.vrf_address_family import ( + Vrf_address_familyArgs, ) from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.vrf_address_family import ( Vrf_address_familyTemplate, ) -from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.vrf_address_family.vrf_address_family import ( - Vrf_address_familyArgs, -) from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( flatten_config, ) + # import debugpy # debugpy.listen(3000) # debugpy.wait_for_client() class Vrf_address_familyFacts(object): - """ The ios vrf_address_family facts class - """ + """The ios vrf_address_family facts class""" - def __init__(self, module, subspec='config', options='options'): + def __init__(self, module, subspec="config", options="options"): self._module = module self.argument_spec = Vrf_address_familyArgs.argument_spec @@ -47,7 +47,7 @@ def get_config(self, connection): return connection.get("show running-config | section ^vrf") def populate_facts(self, connection, ansible_facts, data=None): - """ Populate the facts for Vrf_address_family network resource + """Populate the facts for Vrf_address_family network resource :param connection: the device connection :param ansible_facts: Facts dictionary @@ -69,7 +69,9 @@ def populate_facts(self, connection, ansible_facts, data=None): data = flatten_config(address_data, "vrf") # parse native config using the Vrf_address_family template - vrf_address_family_parser = Vrf_address_familyTemplate(lines=data.splitlines(), module=self._module) + vrf_address_family_parser = Vrf_address_familyTemplate( + lines=data.splitlines(), module=self._module + ) obj = vrf_address_family_parser.parse() objs = list(obj.values()) @@ -80,14 +82,16 @@ def populate_facts(self, connection, ansible_facts, data=None): else: vrf["address_families"] = [] - ansible_facts['ansible_network_resources'].pop('vrf_address_family', None) + ansible_facts["ansible_network_resources"].pop("vrf_address_family", None) params = utils.remove_empties( - vrf_address_family_parser.validate_config(self.argument_spec, {"config": objs}, redact=True) + vrf_address_family_parser.validate_config( + self.argument_spec, {"config": objs}, redact=True + ), ) - facts['vrf_address_family'] = params.get("config", []) - ansible_facts['ansible_network_resources'].update(facts) + facts["vrf_address_family"] = params.get("config", []) + ansible_facts["ansible_network_resources"].update(facts) return ansible_facts 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 6c727af0f..0d5d036f6 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 @@ -5,6 +5,7 @@ from __future__ import absolute_import, division, print_function + __metaclass__ = type """ @@ -15,10 +16,12 @@ """ import re + from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import ( NetworkTemplate, ) + # UNIQUE_AFI = "{{ 'address_families_'+ afi + '_' + safi }}" diff --git a/plugins/modules/ios_vrf_address_family.py b/plugins/modules/ios_vrf_address_family.py index c1b803e8f..91fceefbf 100644 --- a/plugins/modules/ios_vrf_address_family.py +++ b/plugins/modules/ios_vrf_address_family.py @@ -10,6 +10,7 @@ from __future__ import absolute_import, division, print_function + __metaclass__ = type DOCUMENTATION = """ @@ -839,6 +840,7 @@ """ from ansible.module_utils.basic import AnsibleModule + from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.vrf_address_family.vrf_address_family import ( Vrf_address_familyArgs, ) diff --git a/tests/integration/targets/ios_vrf_address_family/tests/common/_parsed.cfg b/tests/integration/targets/ios_vrf_address_family/tests/common/_parsed.cfg index 9284311c3..40f020743 100644 --- a/tests/integration/targets/ios_vrf_address_family/tests/common/_parsed.cfg +++ b/tests/integration/targets/ios_vrf_address_family/tests/common/_parsed.cfg @@ -7,4 +7,4 @@ vrf definition test export map "testing-map" export ipv4 multicast 345 map "single" export ipv4 unicast 67 map "test-map" allow-evpn - exit-address-family \ No newline at end of file + exit-address-family diff --git a/tests/integration/targets/ios_vrf_address_family/tests/common/_populate.yaml b/tests/integration/targets/ios_vrf_address_family/tests/common/_populate.yaml index 6cb6c2356..fb2204f8a 100644 --- a/tests/integration/targets/ios_vrf_address_family/tests/common/_populate.yaml +++ b/tests/integration/targets/ios_vrf_address_family/tests/common/_populate.yaml @@ -11,4 +11,4 @@ - import ipv4 unicast 12 map "ran-map" allow-evpn - export map "testing-map" - export ipv4 multicast 345 map "single" - - export ipv4 unicast 67 map "test-map" allow-evpn \ No newline at end of file + - export ipv4 unicast 67 map "test-map" allow-evpn