�
�Udac @` sd d d l m Z m Z m Z e Z i d d 6d g d 6d d 6Z d Z d Z d
Z d d l
Z
d d l Z d d l m
Z
m Z d d
l m Z d d l m Z d e f d � � YZ d e f d � � YZ d e f d � � YZ d e f d � � YZ d e f d � � YZ e d e d e d e d e � Z e e j � � Z d � Z e d k r`e � n d S( i ( t absolute_importt divisiont print_functions 1.1t metadata_versiont previewt statust networkt supported_bys�
---
module: frr_facts
version_added: "2.8"
author: "Nilashish Chakraborty (@NilashishC)"
short_description: Collect facts from remote devices running Free Range Routing (FRR).
description:
- Collects a base set of device facts from a remote device that
is running FRR. This module prepends all of the
base network fact keys with C(ansible_net_<fact>). The facts
module will always collect a base set of facts from the device
and can enable or disable collection of additional facts.
notes:
- Tested against FRR 6.0.
options:
gather_subset:
description:
- When supplied, this argument restricts the facts collected
to a given subset.
- Possible values for this argument include
C(all), C(hardware), C(config), and C(interfaces).
- Specify a list of values to include a larger subset.
- Use a value with an initial C(!) to collect all facts except that subset.
required: false
default: '!config'
s{
- name: Collect all facts from the device
frr_facts:
gather_subset: all
- name: Collect only the config and default facts
frr_facts:
gather_subset:
- config
- name: Collect the config and hardware facts
frr_facts:
gather_subset:
- config
- hardware
- name: Do not collect hardware facts
frr_facts:
gather_subset:
- "!hardware"
s�
ansible_net_gather_subset:
description: The list of fact subsets collected from the device
returned: always
type: list
# default
ansible_net_hostname:
description: The configured hostname of the device
returned: always
type: str
ansible_net_version:
description: The FRR version running on the remote device
returned: always
type: str
ansible_net_api:
description: The name of the transport
returned: always
type: str
ansible_net_python_version:
description: The Python version that the Ansible controller is using
returned: always
type: str
# hardware
ansible_net_mem_stats:
description: The memory statistics fetched from the device
returned: when hardware is configured
type: dict
# config
ansible_net_config:
description: The current active config from the device
returned: when config is configured
type: str
# interfaces
ansible_net_all_ipv4_addresses:
description: All IPv4 addresses configured on the device
returned: when interfaces is configured
type: list
ansible_net_all_ipv6_addresses:
description: All IPv6 addresses configured on the device
returned: when interfaces is configured
type: list
ansible_net_interfaces:
description: A hash of all interfaces running on the system
returned: when interfaces is configured
type: dict
ansible_net_mpls_ldp_neighbors:
description: The list of MPLS LDP neighbors from the remote device
returned: when interfaces is configured and LDP daemon is running on the device
type: dict
N( t run_commandst get_capabilities( t
AnsibleModule( t iteritemst FactsBasec B` s5 e Z e � Z d � Z d � Z d � Z d � Z RS( c C` s4 | | _ t � | _ d | _ t | j � | _ d S( N( t modulet dictt factst Nonet responsesR t
_capabilities( t selfR
( ( sI /usr/lib/python2.7/site-packages/ansible/modules/network/frr/frr_facts.pyt __init__� s c C` s% t | j d | j d t �| _ d S( Nt commandst check_rc( R R
t COMMANDSt FalseR ( R ( ( sI /usr/lib/python2.7/site-packages/ansible/modules/network/frr/frr_facts.pyt populate� s c C` s t d | d t � S( NR R ( R R ( R t cmd( ( sI /usr/lib/python2.7/site-packages/ansible/modules/network/frr/frr_facts.pyt run� s c C` s: d } t j | | t j � } | r6 | j d � } n | S( Ni ( R t ret searcht Mt group( R t patternt datat valuet match( ( sI /usr/lib/python2.7/site-packages/ansible/modules/network/frr/frr_facts.pyt parse_facts� s
( t __name__t
__module__t listR R R R R$ ( ( ( sI /usr/lib/python2.7/site-packages/ansible/modules/network/frr/frr_facts.pyR s
t Defaultc B` s# e Z d g Z d � Z d � Z RS( s show versionc C` s- t t | � j � | j j | j � � d S( N( t superR( R R t updatet platform_facts( R ( ( sI /usr/lib/python2.7/site-packages/ansible/modules/network/frr/frr_facts.pyR � s c C` s� i } | j } | d } | d | d <x4 d
D], } | j d | � } | r. | | | <q. q. W| d | d <t j � | d <| S( Nt device_infot
network_ost systemt versiont hostnames
network_os_%st network_apit apit python_version( s versionR0 ( R t gett platformR3 ( R R+ t respR, t itemt val( ( sI /usr/lib/python2.7/site-packages/ansible/modules/network/frr/frr_facts.pyR+ � s
( R% R&