summaryrefslogtreecommitdiff
path: root/lib/ansible/module_utils/network/eos/facts/acl_interfaces/acl_interfaces.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ansible/module_utils/network/eos/facts/acl_interfaces/acl_interfaces.py')
-rw-r--r--lib/ansible/module_utils/network/eos/facts/acl_interfaces/acl_interfaces.py133
1 files changed, 0 insertions, 133 deletions
diff --git a/lib/ansible/module_utils/network/eos/facts/acl_interfaces/acl_interfaces.py b/lib/ansible/module_utils/network/eos/facts/acl_interfaces/acl_interfaces.py
deleted file mode 100644
index 89c3336a62..0000000000
--- a/lib/ansible/module_utils/network/eos/facts/acl_interfaces/acl_interfaces.py
+++ /dev/null
@@ -1,133 +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 eos 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.eos.argspec.acl_interfaces.acl_interfaces import Acl_interfacesArgs
-
-
-class Acl_interfacesFacts(object):
- """ The eos 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 | include interface | access-group | traffic-filter')
-
- 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)
- # split the config into instances of the resource
- resource_delim = 'interface'
- find_pattern = r'(?:^|\n)%s.*?(?=(?:^|\n)%s|$)' % (resource_delim,
- resource_delim)
- resources = [p.strip() for p in re.findall(find_pattern,
- data,
- re.DOTALL)]
- 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})
- facts['acl_interfaces'] = [utils.remove_empties(cfg) for cfg in 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)
- access_group_list = []
- access_group_v6_list = []
- acls_list = []
- group_list = []
- group_dict = {}
- config['name'] = utils.parse_conf_arg(conf, 'interface')
- conf_lines = conf.split('\n')
- for line in conf_lines:
- if config['name'] in line:
- continue
- access_group = utils.parse_conf_arg(line, 'ip access-group')
- # This module was verified on an ios device since vEOS doesnot support
- # acl_interfaces cnfiguration. In ios, ipv6 acl is configured as
- # traffic-filter and in eos it is access-group
-
- # access_group_v6 = utils.parse_conf_arg(line, 'ipv6 traffic-filter')
- access_group_v6 = utils.parse_conf_arg(line, 'ipv6 access-group')
- if access_group:
- access_group_list.append(access_group)
- if access_group_v6:
- access_group_v6_list.append(access_group_v6)
- if access_group_list:
- for acl in access_group_list:
- a_name = acl.split()[0]
- a_dir = acl.split()[1]
- acls_dict = {"name": a_name, "direction": a_dir}
- acls_list.append(acls_dict)
- group_dict = {"afi": "ipv4", "acls": acls_list}
- group_list.append(group_dict)
- acls_list = []
- if group_list:
- config['access_groups'] = group_list
- if access_group_v6_list:
- for acl in access_group_v6_list:
- a_name = acl.split()[0]
- a_dir = acl.split()[1]
- acls_dict = {"name": a_name, "direction": a_dir}
- acls_list.append(acls_dict)
- group_dict = {"acls": acls_list, "afi": "ipv6"}
- group_list.append(group_dict)
- acls_list = []
- if group_list:
- config['access_groups'] = group_list
- return utils.remove_empties(config)