HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //usr/lib/python3.9/site-packages/ansible/inventory/__pycache__/group.cpython-39.pyc
a

�)g�%�@s�ddlmZmZmZeZddlmZmZddl	m
Z
ddlmZ
ddlmZddlmZmZddlmZddlmZe�Zddd�ZGd
d�d�ZdS)�)�absolute_import�division�print_function)�Mapping�MutableMapping)�chain)�	constants)�AnsibleError)�	to_native�to_text)�Display)�combine_vars�_FcCs�d}|r�tj�|�}|r�dtt|��t|�f}tjdvs>|rntj�||�}|s�tjdks�t�d|�d}ntjdkr�t�d|�d	}|r�t�	|�|S)
N�z,invalid character(s) "%s" in group name (%s))�never�ignoreZsilentlyz
Replacing zaInvalid characters were found in group names and automatically replaced, use -vvvv to see detailsrzNot replacing %szWInvalid characters were found in group names but not replaced, use -vvvv to see details)
�CZINVALID_VARIABLE_NAMES�findallr�setZTRANSFORM_INVALID_GROUP_CHARS�sub�displayZvvvvZwarning)�nameZreplacer�forceZsilent�warnZ
invalid_chars�msg�r�;/usr/lib/python3.9/site-packages/ansible/inventory/group.py�to_safe_group_name s 

rc@s�eZdZdZd0dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
d1dd�Zdd�Zdd�Z
edd��Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�ZdS)2�Groupz a group of ansible hosts NcCs>d|_t|�|_g|_d|_i|_g|_g|_d|_d|_	dS)Nr�)
�depthrr�hosts�_hosts�vars�child_groups�
parent_groups�_hosts_cache�priority)�selfrrrr�__init__=s
zGroup.__init__cCs|��S�N��get_name�r(rrr�__repr__IszGroup.__repr__cCs|��Sr*r+r-rrr�__str__Lsz
Group.__str__cCs|��Sr*)�	serializer-rrr�__getstate__OszGroup.__getstate__cCs
|�|�Sr*)�deserialize)r(�datarrr�__setstate__RszGroup.__setstate__cCsFg}|jD]}|�|���q
d|_t|j|j��||j|j	d�}|S)N)rr#r%r r!)
r%�appendr0r"�dictrr#�copyr r!)r(r%�parent�resultrrrr0Us
�zGroup.serializecCs||��|�d�|_|�dt��|_|�dd�|_|�dg�|_d|_|�dg�}|D] }t�}|�	|�|j
�|�qVdS)Nrr#r rr!r%)r)�getrr6r#r r!r"rr2r%r5)r(r3r%Zparent_data�grrrr2fs
zGroup.deserializeFc	s�tg�}tt|���}|r$|�|�|rF|r2|gng}|�t|���|r�|�|�tg�}t��fdd�|D��D]$}|�|�|rt||vrt|�|�qt|�|�|}qF|r�|S|S)a�
        Given `rel` that is an iterable property of Group,
        consitituting a directed acyclic graph among all groups,
        Returns a set of all groups in full tree
        A   B    C
        |  / |  /
        | /  | /
        D -> E
        |  /    vertical connections
        | /     are directed upward
        F
        Called on F, returns set of (A, B, C, D, E)
        c3s|]}t|��VqdSr*)�getattr��.0r;��relrr�	<genexpr>��z+Group._walk_relationship.<locals>.<genexpr>)	rr<�add�extend�updater�
from_iterabler5�difference_update)	r(r@�include_self�preserve_ordering�seen�unprocessedZorderedZnew_unprocessedZnew_itemrr?r�_walk_relationshipts(



zGroup._walk_relationshipcCs
|�d�S)Nr%�rLr-rrr�
get_ancestors�szGroup.get_ancestorscKs|jdi|��S)Nr$)r$rM)r(�kwargsrrr�get_descendants�szGroup.get_descendantscCs|jdurt|j�|_|jSr*)r"rr!r-rrr�
host_names�s
zGroup.host_namescCs|jSr*�rr-rrrr,�szGroup.get_namecCs�d}||krtd��||jvr�|��}|��}||vrRtdt|j�t|j�f��|�|�|�|�d}|j�|�t	|j
d|j
g�|_
|��|jdd�|jD�vr�|j�|�|�
�D]}|j|d�q�|��|S)	NFzcan't add group to itselfzGAdding group '%s' as child to '%s' creates a recursive dependency loop.TrcSsg|]
}|j�qSrrRr=rrr�
<listcomp>�rBz)Group.add_child_group.<locals>.<listcomp>)Z	additions)�	Exceptionr$rNr	r
rrCrGr5�maxr �_check_children_depthr%�	get_hostsZpopulate_ancestors�clear_hosts_cache)r(�group�addedZstart_ancestorsZ
new_ancestors�hrrr�add_child_group�s(


zGroup.add_child_groupcCs�|j}|j}tg�}t|j�}|r�|�|�|d7}|��}tg�}|D] }|j|krH||_|�|j�qH||t|�krtdt|j���qdS)Nrz5The group named '%s' has a recursive dependency loop.)	r rr$rEr7�lenr	r
r)r(r Zstart_depthrJrKZ
to_processr;rrrrV�s


zGroup._check_children_depthcCsDd}|j|jvr@|j�|�|j�|j�|�|�|��d}|S�NFT)rrQr!r5r"rC�	add_grouprX)r(�hostrZrrr�add_host�s
zGroup.add_hostcCsDd}|j|jvr@|j�|�|j�|j�|�|�|��d}|Sr^)rrQr!�remover"Zremove_grouprX)r(r`Zremovedrrr�remove_host�s
zGroup.remove_hostcCs^|dkr|�t|��nB||jvrPt|j|t�rPt|t�rPt|j||i�|_n
||j|<dS)NZansible_group_priority)�set_priority�intr#�
isinstancerrr
)r(�key�valuerrr�set_variable�s
$zGroup.set_variablecCsd|_|��D]
}d|_qdSr*)r&rN)r(r;rrrrX�szGroup.clear_hosts_cachecCs|jdur|��|_|jSr*)r&�
_get_hostsr-rrrrWs

zGroup.get_hostscCs\g}i}|jddd�D]@}|j}|D]0}||vr$d||<|jdkrJ|jrJq$|�|�q$q|S)NT)rHrIr�all)rPr!rZimplicitr5)r(r!rJZkidZ	kid_hostsZkkrrrrj
szGroup._get_hostscCs
|j��Sr*)r#r7r-rrr�get_varsszGroup.get_varscCs&zt|�|_Wnty Yn0dSr*)rer'�	TypeError)r(r'rrrrdszGroup.set_priority)N)FF)�__name__�
__module__�__qualname__�__doc__r)r.r/r1r4r0r2rLrNrP�propertyrQr,r\rVrarcrirXrWrjrlrdrrrrr8s0

'
#


rN)rFF)Z
__future__rrr�typeZ
__metaclass__�collections.abcrr�	itertoolsrZansiblerrZansible.errorsr	Zansible.module_utils._textr
rZansible.utils.displayrZansible.utils.varsr
rrrrrrr�<module>s