diff options
Diffstat (limited to 'lib/ansible/module_utils/network/nxos/facts/acl_interfaces/acl_interfaces.py')
-rw-r--r-- | lib/ansible/module_utils/network/nxos/facts/acl_interfaces/acl_interfaces.py | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/lib/ansible/module_utils/network/nxos/facts/acl_interfaces/acl_interfaces.py b/lib/ansible/module_utils/network/nxos/facts/acl_interfaces/acl_interfaces.py deleted file mode 100644 index 87d522df67..0000000000 --- a/lib/ansible/module_utils/network/nxos/facts/acl_interfaces/acl_interfaces.py +++ /dev/null @@ -1,119 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2019 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -The nxos acl_interfaces fact class -It is in this file the configuration is collected from the device -for a given resource, parsed, and the facts tree is populated -based on the configuration. -""" -from __future__ import absolute_import, division, print_function -__metaclass__ = type - -import re -from copy import deepcopy -from ansible.module_utils.network.common import utils -from ansible.module_utils.network.nxos.argspec.acl_interfaces.acl_interfaces import Acl_interfacesArgs -from ansible.module_utils.network.nxos.utils.utils import normalize_interface - - -class Acl_interfacesFacts(object): - """ The nxos acl_interfaces fact class - """ - - def __init__(self, module, subspec='config', options='options'): - self._module = module - self.argument_spec = Acl_interfacesArgs.argument_spec - spec = deepcopy(self.argument_spec) - if subspec: - if options: - facts_argument_spec = spec[subspec][options] - else: - facts_argument_spec = spec[subspec] - else: - facts_argument_spec = spec - - self.generated_spec = utils.generate_dict(facts_argument_spec) - - def get_device_data(self, connection): - return connection.get('show running-config | section interface') - - def populate_facts(self, connection, ansible_facts, data=None): - """ Populate the facts for acl_interfaces - :param connection: the device connection - :param ansible_facts: Facts dictionary - :param data: previously collected conf - :rtype: dictionary - :returns: facts - """ - if not data: - data = self.get_device_data(connection) - data = data.split('interface') - - resources = [] - for i in range(len(data)): - intf = data[i].split('\n') - for l in range(1, len(intf)): - if not re.search('ip(v6)?( port)? (access-group|traffic-filter)', intf[l]): - intf[l] = '' - intf = list(filter(None, intf)) - resources.append(intf) - - objs = [] - for resource in resources: - if resource: - obj = self.render_config(self.generated_spec, resource) - if obj: - objs.append(obj) - - ansible_facts['ansible_network_resources'].pop('acl_interfaces', None) - facts = {} - if objs: - params = utils.validate_config( - self.argument_spec, {'config': objs}) - params = utils.remove_empties(params) - facts['acl_interfaces'] = params['config'] - - ansible_facts['ansible_network_resources'].update(facts) - return ansible_facts - - def render_config(self, spec, conf): - """ - Render config as dictionary structure and delete keys - from spec for null values - - :param spec: The facts tree, generated from the argspec - :param conf: The configuration - :rtype: dictionary - :returns: The generated config - """ - config = deepcopy(spec) - name = conf[0].strip() - config['name'] = normalize_interface(name) - config['access_groups'] = [] - v4 = {'afi': 'ipv4', 'acls': []} - v6 = {'afi': 'ipv6', 'acls': []} - for c in conf[1:]: - if c: - acl4 = re.search(r'ip( port)? access-group (\w*) (\w*)', c) - acl6 = re.search(r'ipv6( port)? traffic-filter (\w*) (\w*)', c) - if acl4: - acl = {'name': acl4.group(2).strip( - ), 'direction': acl4.group(3).strip()} - if acl4.group(1): - acl.update({'port': True}) - v4['acls'].append(acl) - elif acl6: - acl = {'name': acl6.group(2), 'direction': acl6.group(3)} - if acl6.group(1): - acl.update({'port': True}) - v6['acls'].append(acl) - - if len(v4['acls']) > 0: - config['access_groups'].append(v4) - if len(v6['acls']) > 0: - config['access_groups'].append(v6) - - return utils.remove_empties(config) |