o nnh@s`ddlmZddlmZmZddlmZmZddlm Z ddl m Z m Z dgZ GdddZdS) ) annotations)MappingMutableMapping)GroupInventoryObjectType)patterns) combine_vars get_unique_idHostc@seZdZdZejZddZddZddZ dd Z d d Z d d Z ddZ ddZddZd(ddZddZd)ddZddZddZd d!Zd"d#Zd$d%Zd&d'ZdS)*r z a single ansible host cC|SN) serializeselfrA/usr/local/lib/python3.10/dist-packages/ansible/inventory/host.py __getstate__$zHost.__getstate__cCs ||Sr ) deserialize)rdatarrr __setstate__' zHost.__setstate__cCst|tsdS|j|jkS)NF) isinstancer _uuidrotherrrr__eq__*s  z Host.__eq__cCs || Sr )rrrrr__ne__/s z Host.__ne__cCs t|jSr )hashnamerrrr__hash__2rz Host.__hash__cCr r get_namerrrr__str__5rz Host.__str__cCr r r!rrrr__repr__8rz Host.__repr__cCs@g}|jD] }||qt|j|j|j|j||j dS)N)rvarsaddressuuidgroupsimplicit) r(appendr dictrr%copyr&rr))rr(grouprrrr ;s zHost.serializecCs|jdd|d|_|dt|_|dd|_|dd|_|dd|_|d g}|D]}t}| ||j |q1dS) NF)gen_uuidrr%r&r'r)r() __init__getrr+r%r&rr)rrr(r*)rrr( group_datagrrrrIs    zHost.deserializeNTcCsHi|_g|_d|_||_||_|r|dt||rt|_d|_dS)N ansible_portF) r%r(rrr& set_variableintr r))rrportr.rrrr0Xs z Host.__init__cC|jSr rrrrrr"hz Host.get_namecCsF|dur|jD]}||qdS|D] }||jvr |j|qdSr )r( add_groupr*)r additionsr-rrrpopulate_ancestorsks    zHost.populate_ancestorscCsFd}|D] }||jvr|j|q||jvr!|j|d}|S)NFT) get_ancestorsr(r*)rr-addedoldgrrrr;us     zHost.add_groupcCs`d}||jvr.|j|d}|D]}|jdkr-|jD] }||vr'nq||q|S)NFTall)r(remover>r remove_group)rr-removedr@childgrrrrCs       zHost.remove_groupcCsH||jvrt|j|trt|trt|j||i|_dS||j|<dSr )r%rrrr)rkeyvaluerrrr5s$zHost.set_variablecCr8r )r(rrrr get_groupsr:zHost.get_groupscCsli}|j|d<td|jstd|jr|j|d<n |jdd|d<tdd|D|d <|S) Ninventory_hostnameipv4ipv6inventory_hostname_short.rcSsg|] }|jdkr|jqS)rAr9).0r3rrr sz'Host.get_magic_vars.. group_names)rrmatchsplitsortedrH)rresultsrrrget_magic_varss   zHost.get_magic_varscCst|j|Sr )rr%rUrrrrget_varssz Host.get_vars)NNTr )__name__ __module__ __qualname____doc__rHOST base_typerrrrr r#r$r rr0r"r=r;rCr5rHrUrVrrrrr s*     N) __future__rcollections.abcrransible.inventory.grouprransible.parsing.utils.addressesransible.utils.varsrr __all__r rrrrs