
    Vh                     h    d dl mZmZmZ eZdZdZdZd dl	m
Z
 d dlmZmZmZ d Zedk(  r e        y	y	)
    )absolute_importdivisionprint_functiona  
module: nameserver_info
short_description: Look up nameservers for a DNS name
version_added: 2.6.0
description:
  - Retrieve all nameservers that are responsible for a DNS name.
extends_documentation_fragment:
  - community.dns.attributes
  - community.dns.attributes.info_module
  - community.dns.attributes.idempotent_not_modify_state
author:
  - Felix Fontein (@felixfontein)
options:
  name:
    description:
      - A list of DNS names whose nameservers to retrieve.
    required: true
    type: list
    elements: str
  resolve_addresses:
    description:
      - Whether to resolve the nameserver names to IP addresses.
    type: bool
    default: false
  query_retry:
    description:
      - Number of retries for DNS query timeouts.
    type: int
    default: 3
  query_timeout:
    description:
      - Timeout per DNS query in seconds.
    type: float
    default: 10
  always_ask_default_resolver:
    description:
      - When set to V(true) (default), will use the default resolver to find the authoritative nameservers of a subzone. See
        O(server) for how to configure the default resolver.
      - When set to V(false), will use the authoritative nameservers of the parent zone to find the authoritative nameservers
        of a subzone. This only makes sense when the nameservers were recently changed and have not yet propagated.
    type: bool
    default: true
  servfail_retries:
    description:
      - How often to retry on SERVFAIL errors.
    type: int
    default: 0
  server:
    description:
      - The DNS server(s) to use to look up the result. Must be a list of one or more IP addresses.
      - By default, the system's standard resolver is used.
    type: list
    elements: str
    version_added: 2.7.0
requirements:
  - dnspython >= 1.15.0 (maybe older versions also work)
a  
- name: Retrieve name servers of two DNS names
  community.dns.nameserver_info:
    name:
      - www.example.com
      - example.org
  register: result

- name: Show nameservers for www.example.com
  ansible.builtin.debug:
    msg: '{{ result.results[0].nameserver }}'
a  
results:
  description:
    - Information on the nameservers for every DNS name provided in O(name).
  returned: always
  type: list
  elements: dict
  contains:
    name:
      description:
        - The DNS name this entry is for.
      returned: always
      type: str
      sample: www.example.com
    nameservers:
      description:
        - A list of nameservers for this DNS name.
      returned: success
      type: list
      elements: str
      sample:
        - ns1.example.com
        - ns2.example.com
  sample:
    - name: www.example.com
      nameservers:
        - ns1.example.com
        - ns2.example.com
    - name: example.org
      nameservers:
        - ns1.example.org
        - ns2.example.org
        - ns3.example.org
)AnsibleModule)ResolveDirectlyFromNameServersassert_requirements_presentguarded_runc                     t        ddddddddd	dd
ddddddddddddd      } t        |        | j                  d   | j                  d   t        | j                  d   | j                  d   | j                  d   | j                  d   | j                  d         d gt	              z  t              D ]  \  }}d|i|<    fd}t        || fd       | j                         y )NTliststr)requiredtypeelementsboolF)r   defaultint   float
   r   )r   r   )nameresolve_addressesquery_retryquery_timeoutalways_ask_default_resolverservfail_retriesserver)argument_specsupports_check_moder   r   r   r   r   r   r   )timeouttimeout_retriesr   r   server_addressesc                  p    t              D ]'  \  } }t        j                  |            |    d<   ) y )N)r   nameservers)	enumeratesortedresolve_nameservers)indexr   namesr   resolverresultss     q/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/dns/plugins/modules/nameserver_info.pyfzmain.<locals>.f   sB    $U+ 	|KE4,283O3OPThy3O3z,{GEN=)	|    c                      d iS )Nr*    r*   s   r+   <lambda>zmain.<locals>.<lambda>   s    	7?S r-   )generate_additional_resultsr0   )r   r   paramsr   lenr$   r	   	exit_json)moduler'   r   r,   r(   r   r)   r*   s       @@@@r+   mainr7      s!   !%v5I*0U!C$)a8&-"=4:t+L).1 =%59
 !F  'MM&!E&9:-o.m4'9:$*MM2O$Px0H fs5z!G ' 
tD


| 67ST
W%r-   __main__N)
__future__r   r   r   r   __metaclass__DOCUMENTATIONEXAMPLESRETURNansible.module_utils.basicr   ?ansible_collections.community.dns.plugins.module_utils.resolverr   r   r	   r7   __name__r/   r-   r+   <module>rA      sU    A @ 8t!
F 5 $&N zF r-   