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/cwd/usr/lib/python3/dist-packages/compose/__pycache__/network.cpython-310.pyc
o

S�`�-�@sddlZddlZddlmZddlmZddlmZddlm	Z	ddlm
Z
ddlmZddlm
Z
d	d
lmZd	dlmZd	dlmZd	d
lmZd	dlmZe�e�Zgd�ZGdd�d�Zdd�ZGdd�de�Zdd�Zdd�Zdd�ZGdd�d�Z dd�Z!d d!�Z"d"d#�Z#dS)$�N)�OrderedDict)�
itemgetter)�NotFound)�
IPAMConfig)�IPAMPool)�version_gte)�
version_lt�)�__version__)�ConfigurationError)�
LABEL_NETWORK)�
LABEL_PROJECT)�
LABEL_VERSION)z.com.docker.network.driver.overlay.vxlanid_listz$com.docker.network.windowsshim.hnsidz*com.docker.network.windowsshim.networknamec@sneZdZ			ddd�Zdd�Zdd�Zdd	d
�Zedd��Zed
d��Z	edd��Z
edd��Zdd�ZdS)�NetworkNFcCsP||_||_||_||_||_t|�|_||_||_|	|_	|
|_
||_d|_dS�N)
�client�project�name�driver�driver_opts�create_ipam_config_from_dict�ipam�external�internal�enable_ipv6�labels�custom_name�legacy)�selfrrrrrrrrrrr�r�1/usr/lib/python3/dist-packages/compose/network.py�__init__s

zNetwork.__init__cCs�|jr,|jdkr
dSz|��t�d�|j��WdSty+tdj|j	dd���w|�
�z|j|jd�}t||�WdSty{d}|jrQd�|j�}t�
d	�|j	|��|jj|j	|j|j|j|j|j|jt|jjd
�ptddd�	YdSw)
N�overlayz@Network {} declared as external. No new network will be created.z�Network {name} declared as external, but could not be found. Please create the network manually using `{command} {name}` and try again.zdocker network create)r�command�rzthe default driverzdriver "{}"zCreating network "{}" with {}z1.24T)	rr�optionsrrrr�
attachable�check_duplicate)rr�inspect�log�debug�formatrrr�	full_name�_set_legacy_flagr�check_remote_network_config�infor�create_networkrrrr�_labelsr�_version)r�data�driver_namerrr �ensure-sT
�
�������zNetwork.ensurecCs<|jrt�d|j�dSt�d�|j��|j�|j�dS)Nz Network %s is external, skippingzRemoving network {})rr)r/�	true_namer+r�remove_network�rrrr �remove^s
zNetwork.removecCs |r	|j�|j�S|j�|j�Sr)r�inspect_network�legacy_full_namer,)rrrrr r(fszNetwork.inspectcCs&|jr|jSd�t�dd|j�|j�S)N�{}_{}z[_-]�)rrr+�re�subrr8rrr r;ks
�zNetwork.legacy_full_namecCs|jr|jSd�|j|j�S)Nr<)rrr+rr8rrr r,sszNetwork.full_namecCs|��|jr
|jS|jSr)r-rr;r,r8rrr r6yszNetwork.true_namecCsDt|jjd�r	dS|jr|j��ni}|�t|jt|j	t
ti�|S)Nz1.23)rrr2r�copy�updater
rrrrr
)rrrrr r1�s�zNetwork._labelscCsF|jdurdSz|jdd�}|du|_WdSty"d|_YdSw)NTr$F)rr(r)rr3rrr r-�s
�zNetwork._set_legacy_flag)NNNFFFNF)F)
�__name__�
__module__�__qualname__r!r5r9r(�propertyr;r,r6r1r-rrrr rs"
�1




rcCs8|sdSt|�d�pddd�|�dg�D�|�d�d�S)Nr�defaultc	Ss4g|]}t|�d�|�d�|�d�|�d�d��qS)�subnet�ip_range�gateway�
aux_addresses)rG�iprangerIrJ)r�get)�.0�configrrr �
<listcomp>�s���z0create_ipam_config_from_dict.<locals>.<listcomp>rNr%)r�pool_configsr%)rrL)�	ipam_dictrrr r�s
�	�rcseZdZ�fdd�Z�ZS)�NetworkConfigChangedErrorcst��d�||��dS)Nz3Network "{}" needs to be recreated - {} has changed)�superr!r+)r�net_name�
property_name��	__class__rr r!�s
��z"NetworkConfigChangedError.__init__)rBrCrDr!�
__classcell__rrrVr rR�srRcCs�|�d�}t|j�}|j�d�r!|j�d�|�d�kr!t|jd��t|d�dkr�t|d�t|d�kr;t|jd��t|ddd	�}t|ddd	�}|r�|��}|��}|�d�|�d�kret|jd
��|�d�dur||�d�|�d�kr|t|jd��|�d
�|�d
�kr�t|jd��t|�d��t|�d��kr�t|jd��|sM|�d�p�i}|j�d�p�i}	t�	t|�
��t|	�
���D]}
|�|
�|	�|
�kr�t|jd�|
���q�dS)N�IPAMr�DriverzIPAM driver�ConfigrzIPAM configs�Subnet��keyzIPAM config subnet�GatewayzIPAM config gateway�IPRangezIPAM config ip_range�AuxiliaryAddresseszIPAM config aux_addresses�OptionszIPAM option "{}")rLrrrRr6�len�sorted�pop�set�union�keysr+)�remote�local�remote_ipamrQ�remote_configs�
local_configs�lc�rc�remote_opts�
local_opts�krrr �check_remote_ipam_config�s8

""� ��rscCsb|jr|�d�|jkrt|jd��|jpi}|�d�pi}t�t|���t|����D]}|tvr2q+|�|�|�|�krEt|jd�	|���q+|j
durPt||�|jdurd|j|�dd�krdt|jd��|j
durx|j
|�dd�krxt|jd	��|jp|i}|�d
�p�i}t�t|���t|����D]}|�d�r�q�|�|�|�|�kr�t�d�	|j|��q�dS)
NrZrrbzoption "{}"�InternalFr�
EnableIPv6r�Labelszcom.docker.z@Network {}: label "{}" has changed. It may need to be recreated.)rrLrRr6rrfrgrh�OPTS_EXCEPTIONSr+rrsrrr�
startswithr)�warning)rirjrqrprr�local_labels�
remote_labelsrrr r.�s8
 �


 

���r.cs>|jpi}��fdd�|��D�}d|vrt��d�|d<|S)Ncsri|]5\}}|t��|�d|�|�d�|�d�|�d�t|�dd��|�d�|�d�|�d�|�d�d	ud
��qS)rrrrrFrrrN)rrrrrrrrrrr)rrL�bool)rM�network_namer3�rrrr �
<dictcomp>�s
�
��z"build_networks.<locals>.<dictcomp>rF)�networks�itemsr)r�config_datar�network_configr�rr~r �build_networks�s

�r�c@s0eZdZdd�Zedd��Zdd�Zdd�Zd	S)
�ProjectNetworkscCs|pi|_||_dSr)r��use_networking)rr�r�rrr r!s

zProjectNetworks.__init__csL�fdd�|D�}t��t|�dh}|r!t�d�d�|���|||�S)Ncs&i|]}t|�D]}|��|��qqSr)�get_network_names_for_servicerL)rM�service�network�r�rr rs�
��z1ProjectNetworks.from_services.<locals>.<dictcomp>rFz>Some networks were defined but are not used by any service: {}z, )rfr)ryr+�join)�cls�servicesr�r��service_networks�unusedrr�r �
from_servicess
��
zProjectNetworks.from_servicesc	CsJ|jsdS|j��D]}z|��Wq
ty"t�d|j�Yq
wdS)NzNetwork %s not found.)r�r��valuesr9rr)ryr6�rr�rrr r9s��zProjectNetworks.removecCs&|jsdS|j��D]}|��q
dSr)r�r�r�r5r�rrr �
initialize#s

�zProjectNetworks.initializeN)rBrCrDr!�classmethodr�r9r�rrrr r�s

	r�cCs.d|vriS|�dddi�}dd�|��D�S)N�network_moder�rFcSsi|]	\}}||p
i�qSrr)rM�netrNrrr r/s��z0get_network_defs_for_service.<locals>.<dictcomp>)rLr�)�service_dictr�rrr �get_network_defs_for_service+s�r�cCst|���Sr)r�rh)r�rrr r�5sr�cCs�i}t|���D]\}}|�|�}|r|||j<qtd�|d|���tdd�|��D��r;tt	|��dd�dd��Stt	|��t
d	�d
��S)Nz+Service "{}" uses an undefined network "{}"rcSsg|]}|�d��qS)�priority�rL)rM�vrrr rODsz get_networks.<locals>.<listcomp>cSs|d�d�pdS)Nr	r�rr�)�trrr �<lambda>Gszget_networks.<locals>.<lambda>T)r^�reverserr])r�r�rLr6rr+�anyr�rrdr)r��network_definitionsr�r�netdefr�rrr �get_networks9s
��r�)$�loggingr>�collectionsr�operatorr�
docker.errorsr�docker.typesrr�docker.utilsrrr=r
rNr�constrr
r�	getLoggerrBr)rwrrrRrsr.r�r�r�r�r�rrrr �<module>s4
z	%