Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
ansible / dellemc / enterprise_sonic / plugins / modules / sonic_facts.py
Size: Mime:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright 2020 Dell Inc. or its subsidiaries. All Rights Reserved
# GNU General Public License v3.0+
# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
"""
The module file for sonic_facts
"""

from __future__ import absolute_import, division, print_function
__metaclass__ = type

DOCUMENTATION = """
---
module: sonic_facts
version_added: 1.0.0
notes:
- Tested against Enterprise SONiC Distribution by Dell Technologies.
- Supports C(check_mode).
short_description: Collects facts on devices running Enterprise SONiC
description:
  - Collects facts from devices running Enterprise SONiC Distribution by
    Dell Technologies. This module places the facts gathered in the fact tree
    keyed by the respective resource name. The facts module always collects
    a base set of facts from the device and can enable or disable collection
    of additional facts.
author:
- Mohamed Javeed (@javeedf)
- Abirami N (@abirami-n)
options:
  gather_subset:
    description:
      - When supplied, this argument restricts the facts collected
        to a given subset. Possible values for this argument include
        all, min, hardware, config, legacy, and interfaces. It can also
        specify a list of values to include a larger subset. A value
        can also be enclosed in double quotes and preceded by an
        exclamation mark to indicate that the corresponding
        information should not be collected.
    required: false
    type: list
    elements: str
    default: '!config'
  gather_network_resources:
    description:
      - When supplied, this argument restricts the facts collected
        to a given network resource or a given list of network
        resources. Possible values for this argument include
        'all' and specific network resource names such as
        'interfaces', 'vlans', 'lag_interfaces', 'l2_interfaces',
        and 'l3_interfaces'. Multiple resources can be specified by
        placing them in a comma-separated list. A given value
        can also be enclosed in double quotes and preceded by an
        exclamation mark to indicate that the information for the
        corresponding resource should not be collected.
    required: false
    type: list
    elements: str
    choices:
      - all
      - vlans
      - interfaces
      - l2_interfaces
      - l3_interfaces
      - lag_interfaces
      - bgp
      - bgp_af
      - bgp_neighbors
      - bgp_neighbors_af
      - bgp_as_paths
      - bgp_communities
      - bgp_ext_communities
      - mclag
      - vrfs
      - vxlans
      - users
      - system
      - port_breakout
      - aaa
      - tacacs_server
      - radius_server
"""

EXAMPLES = """
- name: Gather all facts
  dellemc.enterprise_sonic.sonic_facts:
    gather_subset: all
    gather_network_resources: all

- name: Collects VLAN and interfaces facts
  dellemc.enterprise_sonic.sonic_facts:
    gather_subset:
      - min
    gather_network_resources:
      - vlans
      - interfaces

- name: Do not collects VLAN and interfaces facts
  dellemc.enterprise_sonic.sonic_facts:
    gather_network_resources:
      - "!vlans"
      - "!interfaces"

- name: Collects VLAN and minimal default facts
  dellemc.enterprise_sonic.sonic_facts:
    gather_subset: min
    gather_network_resources: vlans

- name: Collect lag_interfaces and minimal default facts
  dellemc.enterprise_sonic.sonic_facts:
    gather_subset: min
    gather_network_resources: lag_interfaces

"""

RETURN = """
"""

from ansible.module_utils.basic import AnsibleModule
from ansible_collections.dellemc.enterprise_sonic.plugins.module_utils.network.sonic.argspec.facts.facts import FactsArgs
from ansible_collections.dellemc.enterprise_sonic.plugins.module_utils.network.sonic.facts.facts import Facts


def main():
    """
    Main entry point for module execution

    :returns: ansible_facts
    """
    module = AnsibleModule(argument_spec=FactsArgs.argument_spec,
                           supports_check_mode=True)
    warnings = ['default value for `gather_subset` '
                'will be changed to `min` from `!config` v2.11 onwards']

    result = Facts(module).get_facts()

    ansible_facts, additional_warnings = result
    warnings.extend(additional_warnings)

    module.exit_json(ansible_facts=ansible_facts, warnings=warnings)


if __name__ == '__main__':
    main()