HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/1233/root/usr/lib/python3/dist-packages/docker/context/__pycache__/context.cpython-310.pyc
o

�2.a��@szddlZddlZddlmZmZddlmZddlmZddl	m
Z
ddl	mZddl	mZddl	m
Z
Gd	d
�d
�ZdS)�N)�copyfile�rmtree)�	TLSConfig)�ContextException)�get_meta_dir)�
get_meta_file)�get_tls_dir)�get_context_hostc@s�eZdZdZ		d+dd�Z		d,dd�Zd	d
�Zedd��Zed
d��Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zedd��Zedd ��Zed!d"��Zed#d$��Zed%d&��Zed'd(��Zed)d*��ZdS)-�Contextz
A context.NFc	Cs�|std��||_d|_||_i|_i|_d|_d|_|s5|r#|dkr%dn|}|t||�|d�i|_dS|�	�D]7\}}t
|t�sJtd�
||���||j|<|dkrTq9|�dt||��|j|d<t|�d|��|j|d<q9dS)	NzName not providedz	IN MEMORY�swarm�docker��Host�
SkipTLSVerifyz>Unknown endpoint format for
                    context {}: {}rr)�	Exception�name�context_type�orchestrator�	endpoints�tls_cfg�	meta_path�tls_pathr	�items�
isinstance�dictr�format�get�bool)	�selfrr�hostr�tls�default_endpoint�k�v�r$�8/usr/lib/python3/dist-packages/docker/context/context.py�__init__sJ�����
�
���zContext.__init__rcCs@t||�|d�|j|<|r||j|d<|r||j|<dSdS)Nr
�DefaultNamespace)r	rr)rrrr�skip_tls_verify�
def_namespacer$r$r%�set_endpoint9s
��zContext.set_endpointcCs|��S�N)�__call__�rr$r$r%�inspectFszContext.inspectcCs`t�|�}|r.||d|d�dd�|�dd�d�}|d�dd�|_|��t|�|_|SdS)N�Name�Metadata�StackOrchestrator�	Endpoints)rr�Type)r
�
_load_metarr�_load_certsrr)�clsr�meta�instancer$r$r%�load_contextIs

�
zContext.load_contextc
Cs�t|�}tj�|�sdSi}zt|��
}t�|�}Wd�n1s#wYWnttt	fy@}zt
d�||���d}~ww|d��D]&\}}|dkrPqG|�
dtdd��|d|d<t|�
dd��|d|d<qG|S)Nz@Detected corrupted meta file for
                context {} : {}r2rrFrT)r�os�path�isfile�open�json�load�OSError�KeyError�
ValueErrorrrrrr	r)r6r�	meta_file�metadata�f�er"r#r$r$r%r4Ws2
�����
�
�zContext._load_metac	Csi}t|j�}|j��D]m}tj�tj�||��sqd}d}d}t�tj�||��D]+}|�	d�r:tj�|||�}q*|�	d�rHtj�|||�}q*|�	d�rUtj�|||�}q*t
|||g�ryd}|dkrn|jd�dd�snd}t||f||d�||<q||_
||_dS)	N�ca�cert�keyrrFT)�client_cert�ca_cert�verify)rrr�keysr:r;�isdir�join�listdir�
startswith�allrrrr)	r�certs�tls_dir�endpointrKrHrI�filenamerLr$r$r%r5rs8



��

��
zContext._load_certsc	
Cs:t|j�}tj�|�st�|�tt|j�d��}|�t	�
|j��Wd�n1s,wYt|j�}|j
��D]S\}}tj�tj�||��sTt�tj�||��|j}|rht|tj�||tj�|���|jr�|j\}}t|tj�||tj�|���t|tj�||tj�|���q;t|j�|_t|j�|_dS)N�w)rrr:r;rN�makedirsr=r�writer>�dumpsr0rrrrOrKr�basenamerHrr)	r�meta_dirrErTrUr �ca_file�	cert_file�key_filer$r$r%�save�s4

�

�

�
��zContext.savecCs8tj�|j�rt|j�tj�|j�rt|j�dSdSr+)r:r;rNrrrr-r$r$r%�remove�s

�zContext.removecCsd|jj�d|j�d�S)N�<z: 'z'>)�	__class__�__name__rr-r$r$r%�__repr__�szContext.__repr__cCstj|��dd�S)N�)�indent)r>rZr,r-r$r$r%�__str__�szContext.__str__cCs"|j}|�|j�|�|j�|Sr+)r0�update�TLSMaterial�Storage)r�resultr$r$r%r,�szContext.__call__cCs
|jduSr+)rr-r$r$r%�is_docker_host�s
zContext.is_docker_hostcC�|jSr+)rr-r$r$r%r/��zContext.NamecCsF|jr|jdkr|j�dd�}|r|�dd�SdS|j|j�dd�S)Nrrr)rrr)rrUr$r$r%r�szContext.HostcCrnr+)rr-r$r$r%�Orchestrator�rozContext.OrchestratorcCs$i}|jr
d|ji}|j||jd�S)Nr1)r/r0r2)rrr)rr7r$r$r%r0�s
�zContext.MetadatacCs2|j}|r	|dkrd}||j��vr|j|SdS)Nrr)rrrM)rrIr$r$r%r�s
zContext.TLSConfigcCsHi}|j��D]\}}|j\}}tttjj|j||g��||<qd|iS)Nrj)	rrrH�list�mapr:r;r[rK)rrSrUr rHrIr$r$r%rj�s

��zContext.TLSMaterialcCsd|j|jd�iS)Nrk)�MetadataPath�TLSPath)rrr-r$r$r%rk�s
��zContext.Storage)NNNF)rNNFN)rd�
__module__�__qualname__�__doc__r&r*r.�classmethodr9r4r5r`rarerhr,rm�propertyr/rrpr0rrjrkr$r$r$r%r
sD
�+
�




	





r
)r:r>�shutilrr�
docker.tlsr�
docker.errorsr�docker.context.configrrrr	r
r$r$r$r%�<module>s