
    Vh                    f    d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	 d dl
mZmZ dgZ G d d      Zy)	    )annotations)MappingMutableMapping)GroupInventoryObjectType)patterns)combine_varsget_unique_idHostc                      e Zd ZdZej
                  Zd Zd Zd Z	d Z
d Zd Zd Zd	 Zd
 ZddZd ZddZd Zd Zd Zd Zd Zd Zy)r   z a single ansible host c                "    | j                         S N)	serializeselfs    F/home/dcms/DCMS/lib/python3.12/site-packages/ansible/inventory/host.py__getstate__zHost.__getstate__$   s    ~~    c                $    | j                  |      S r   )deserialize)r   datas     r   __setstate__zHost.__setstate__'   s    %%r   c                V    t        |t              sy| j                  |j                  k(  S )NF)
isinstancer   _uuidr   others     r   __eq__zHost.__eq__*   s"    %&zzU[[((r   c                &    | j                  |       S r   )r   r   s     r   __ne__zHost.__ne__/   s    ;;u%%%r   c                ,    t        | j                        S r   )hashnamer   s    r   __hash__zHost.__hash__2   s    DIIr   c                "    | j                         S r   get_namer   s    r   __str__zHost.__str__5       }}r   c                "    | j                         S r   r&   r   s    r   __repr__zHost.__repr__8   r)   r   c                   g }| j                   D ]!  }|j                  |j                                # t        | j                  | j
                  j                         | j                  | j                  || j                        S )N)r#   varsaddressuuidgroupsimplicit)
r0   appendr   dictr#   r-   copyr.   r   r1   )r   r0   groups      r   r   zHost.serialize;   si    [[ 	-EMM%//+,	- !LL]]
 	
r   c                   | j                  d       |j                  d      | _        |j                  dt                     | _        |j                  dd      | _        |j                  dd       | _        |j                  dd      | _        |j                  d	g       }|D ]8  }t               }|j                  |       | j                  j                  |       : y )
NF)gen_uuidr#   r-   r.    r/   r1   r0   )__init__getr#   r3   r-   r.   r   r1   r   r   r0   r2   )r   r   r0   
group_datags        r   r   zHost.deserializeI   s    u%HHV$	HHVTV,	xx	2.XXfd+
U3(B'  	"JAMM*%KKq!	"r   Nc                    i | _         g | _        d | _        || _        || _        |r| j                  dt        |             |rt               | _        d| _        y )Nansible_portF)	r-   r0   r   r#   r.   set_variableintr
   r1   )r   r#   portr7   s       r   r9   zHost.__init__X   sO    	
	nc$i8&DJr   c                    | j                   S r   )r#   r   s    r   r'   zHost.get_nameh   s    yyr   c                    |#| j                   D ]  }| j                  |        y |D ],  }|| j                   vs| j                   j                  |       . y r   )r0   	add_groupr2   )r   	additionsr5   s      r   populate_ancestorszHost.populate_ancestorsk   sV     &u%& # .+KK&&u-.r   c                    d}|j                         D ],  }|| j                  vs| j                  j                  |       . || j                  vr| j                  j                  |       d}|S )NFT)get_ancestorsr0   r2   )r   r5   addedoldgs       r   rD   zHost.add_groupu   sg    '') 	)D4;;&""4(	)
 #KKu%Er   c                   d}|| j                   v rx| j                   j                  |       d}|j                         D ]H  }|j                  dk7  s| j                   D ]  }||j                         v s 7 | j	                  |       J |S )NFTall)r0   removerH   r#   remove_group)r   r5   removedrJ   childgs        r   rN   zHost.remove_group   s    DKKKKu%G ++- 099%"&++ 06#7#7#99!0 ))$/0 r   c                    || j                   v rKt        | j                   |   t              r.t        |t              rt	        | j                   ||i      | _         y || j                   |<   y r   )r-   r   r   r   r	   )r   keyvalues      r   r?   zHost.set_variable   sM    $))
499S>> JzZ_ahOi$TYYe=DI"DIIcNr   c                    | j                   S r   )r0   r   s    r   
get_groupszHost.get_groups   s    {{r   c                   i }| j                   |d<   t        d   j                  | j                         s"t        d   j                  | j                         r| j                   |d<   n!| j                   j                  d      d   |d<   t	        | j                         D cg c]  }|j                   dk7  s|j                     c}      |d<   |S c c}w )	Ninventory_hostnameipv4ipv6inventory_hostname_short.r   rL   group_names)r#   r   matchsplitsortedrU   )r   resultsr<   s      r   get_magic_varszHost.get_magic_vars   s    (,		$%F!!$)),0@0F0Ftyy0Q26))G./26))//#2Fq2IG./!'9J(^AaffX]o(^!_ )_s   C3Cc                J    t        | j                  | j                               S r   )r	   r-   ra   r   s    r   get_varszHost.get_vars   s    DIIt':':'<==r   )NNTr   )__name__
__module____qualname____doc__r   HOST	base_typer   r   r   r    r$   r(   r+   r   r   r9   r'   rF   rD   rN   r?   rU   ra   rc    r   r   r   r      sj    !#((I &)
&
" . #
>r   N)
__future__r   collections.abcr   r   ansible.inventory.groupr   r   ansible.parsing.utils.addressesr   ansible.utils.varsr	   r
   __all__r   rj   r   r   <module>rq      s+   $ # 3 > 4 : (J> J>r   