diff options
Diffstat (limited to 'lib/ansible/module_utils/network/common/facts/facts.py')
-rw-r--r-- | lib/ansible/module_utils/network/common/facts/facts.py | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/lib/ansible/module_utils/network/common/facts/facts.py b/lib/ansible/module_utils/network/common/facts/facts.py deleted file mode 100644 index 1ebf31d7bd..0000000000 --- a/lib/ansible/module_utils/network/common/facts/facts.py +++ /dev/null @@ -1,132 +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 facts base class -this contains methods common to all facts subsets -""" -from ansible.module_utils.network.common.network import get_resource_connection -from ansible.module_utils.six import iteritems - - -class FactsBase(object): - """ - The facts base class - """ - def __init__(self, module): - self._module = module - self._warnings = [] - self._gather_subset = module.params.get('gather_subset') - self._gather_network_resources = module.params.get('gather_network_resources') - self._connection = None - if module.params.get('state') not in ['rendered', 'parsed']: - self._connection = get_resource_connection(module) - - self.ansible_facts = {'ansible_network_resources': {}} - self.ansible_facts['ansible_net_gather_network_resources'] = list() - self.ansible_facts['ansible_net_gather_subset'] = list() - - if not self._gather_subset: - self._gather_subset = ['!config'] - if not self._gather_network_resources: - self._gather_network_resources = ['!all'] - - def gen_runable(self, subsets, valid_subsets, resource_facts=False): - """ Generate the runable subset - - :param module: The module instance - :param subsets: The provided subsets - :param valid_subsets: The valid subsets - :param resource_facts: A boolean flag - :rtype: list - :returns: The runable subsets - """ - runable_subsets = set() - exclude_subsets = set() - minimal_gather_subset = set() - if not resource_facts: - minimal_gather_subset = frozenset(['default']) - - for subset in subsets: - if subset == 'all': - runable_subsets.update(valid_subsets) - continue - if subset == 'min' and minimal_gather_subset: - runable_subsets.update(minimal_gather_subset) - continue - if subset.startswith('!'): - subset = subset[1:] - if subset == 'min': - exclude_subsets.update(minimal_gather_subset) - continue - if subset == 'all': - exclude_subsets.update( - valid_subsets - minimal_gather_subset) - continue - exclude = True - else: - exclude = False - - if subset not in valid_subsets: - self._module.fail_json(msg='Subset must be one of [%s], got %s' % - (', '.join(sorted([item for item in valid_subsets])), subset)) - - if exclude: - exclude_subsets.add(subset) - else: - runable_subsets.add(subset) - - if not runable_subsets: - runable_subsets.update(valid_subsets) - runable_subsets.difference_update(exclude_subsets) - return runable_subsets - - def get_network_resources_facts(self, facts_resource_obj_map, resource_facts_type=None, data=None): - """ - :param fact_resource_subsets: - :param data: previously collected configuration - :return: - """ - if not resource_facts_type: - resource_facts_type = self._gather_network_resources - - restorun_subsets = self.gen_runable(resource_facts_type, frozenset(facts_resource_obj_map.keys()), resource_facts=True) - if restorun_subsets: - self.ansible_facts['ansible_net_gather_network_resources'] = list(restorun_subsets) - instances = list() - for key in restorun_subsets: - fact_cls_obj = facts_resource_obj_map.get(key) - if fact_cls_obj: - instances.append(fact_cls_obj(self._module)) - else: - self._warnings.extend(["network resource fact gathering for '%s' is not supported" % key]) - - for inst in instances: - inst.populate_facts(self._connection, self.ansible_facts, data) - - def get_network_legacy_facts(self, fact_legacy_obj_map, legacy_facts_type=None): - if not legacy_facts_type: - legacy_facts_type = self._gather_subset - - runable_subsets = self.gen_runable(legacy_facts_type, frozenset(fact_legacy_obj_map.keys())) - if runable_subsets: - facts = dict() - # default subset should always returned be with legacy facts subsets - if 'default' not in runable_subsets: - runable_subsets.add('default') - self.ansible_facts['ansible_net_gather_subset'] = list(runable_subsets) - - instances = list() - for key in runable_subsets: - instances.append(fact_legacy_obj_map[key](self._module)) - - for inst in instances: - inst.populate() - facts.update(inst.facts) - self._warnings.extend(inst.warnings) - - for key, value in iteritems(facts): - key = 'ansible_net_%s' % key - self.ansible_facts[key] = value |