%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core20/2599/usr/lib/python3/dist-packages/cloudinit/net/__pycache__/
Upload File :
Create Path :
Current File : //snap/core20/2599/usr/lib/python3/dist-packages/cloudinit/net/__pycache__/eni.cpython-38.pyc

U

Ӈg�S�@s0ddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
mZmZddl
mZmZmZddlmZe�e�Zddd	d
ddgZd
dddddddgZdddddddddddd d!d"d#d$d%d&d'd(d)d*d+gZd,d-�Zd.d/�Zd>d1d2�Zd3d4�Ze
�d5�d6d7��Zd8d9�ZGd:d;�d;ej �Z d?d<d=�Z!dS)@�N)�suppress)�Optional)�performance�subp�util)�ParserError�renderer�subnet_is_ipv6)�NetworkStatezpre-up�upzpost-up�downzpre-downz	post-downZ
bridge_ageingZbridge_bridgeprioZ	bridge_fdZ
bridge_gcinitZbridge_helloZ
bridge_maxageZbridge_maxwaitZ
bridge_stp�address�netmask�	broadcast�network�metric�gatewayZpointtopointZmedia�mtuZhostnameZ
leasehoursZ	leasetimeZvendorZclientZbootfile�serverZhwaddrZprovider�frameZnetnumZendpointZlocalZttlc
Cs�g}ddddddddd	d
g
}|��D]t\}}|dkr6q$|dkrRd|d|df}|r$||kr$t|t�rrd
�|�}d|kr�|�dd�}|�d�||��q$t|�S)Nr
rrrrZpointopointrZscope�
dns_search�dns_nameserversz%s/%s�prefix� �_�-�    {0} {1})�items�
isinstance�list�join�replace�append�format�sorted)�iface�subnet�contentZ	valid_map�key�value�r*�3/usr/lib/python3/dist-packages/cloudinit/net/eni.py�_iface_add_subnetAs0�

r,c

Cs|dkrgSg}dddddddd	d
g	}ddd
g}ddi}|d
dkrN|�d�|��D]�\}}t|t�rx||rtdnd}|rV||kr�qV|dkr�|r�||krVt�d|d||�qV||kr�|D]}	|�d�|�||�|	��q�qVt|t�r�d�	|�}|�d�|�||�|��qVt
|�S)Nr�controlZ	device_idZdriver�index�inet�mode�name�subnets�type�bridge_pathcost�bridge_portprioZbridge_waitport�mac_address�	hwaddress)�bond�bridge�
infiniband�vlanZonZoffrzZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.rr)r"rr�bool�LOGZwarningr#�getrr r$)
r%r.�ipv4_subnet_mtur'Z
ignore_mapZmultiline_keys�renamesr(r)�vr*r*r+�_iface_add_attrs_sT��

�

rBFcCs�|d}|d}|dkrd}n|dkr0d|}nd|}|��}|�||d��djf|�d	jf|�g}|r�|�d
�r�|�djf|��|S)Nr1r-�auto)Zhotplugzallow-z
# control-)�fullname�cverbz{cverb} {fullname}ziface {fullname} {inet} {mode}r6z    hwaddress {mac_address})�copy�updater#r>r")r%r.�render_hwaddressrDr-rEZsubst�linesr*r*r+�_iface_start_entry�s


�rJcs4d}|��D�]�}|��}|�d�r&q|�d�}|d}|dkr�|d}|�d�s`tj�||�}t�|�D]Z�t���}	�fdd	�|	D�}	|	D]4}
t	�
|
���}tj�|
�}t||tj�
|�|�q�qjq|d
k�rH|d}
|
�d�s�tj�||
�}
t�|
�D]H�t�d��}|����}W5QRXtj���}t||tj�
|�|�q�q|dk�r�|dd�D](}||k�rxd
|i||<d||d<�q^q|dk�r�|dd�\}}}||k�r�d
|i||<nd||k�r�td||f��|||d<|||d<|}q|dk�r2|ddk�r|d}n|d}|||d<q|tk�rN|d|||<q|tk�r�|||k�rrg|||<|||�d�|dd���q|�d��rFd||k�r�i||d<|dk�rg||dd<|dd�D]}||dd�|��q�nD|dk�rg||dd<|dd�D]}||dd�|��q&q|�d��r�d||k�rli||d<|tk�r�|�ddd�}|d||d|<�q|d k�r�g||dd!<|dd�D]}||dd!�|��q�n�|d"k�r*|d��d#k�r|d||dd#<n|d||dd#<n�|d$k�rtd%||dk�rVi||dd%<|d||dd%|d<nH|d&k�rd'||dk�r�i||dd'<|d||dd'|d<q|�d(�rd)||k�r�i||d)<|�d(dd�}|d||d)|<q|��D] }d||k�rd*||d<�qdS)+a~Parses the file contents, placing result into ifaces.

    '_source_path' is added to every dictionary entry to define which file
    the configuration information came from.

    :param ifaces: interface dictionary
    :param contents: contents of interfaces file
    :param src_dir: directory interfaces file was located
    :param src_path: file path the `contents` was read
    N�#rrzsource-directory��/cs@g|]8}tj�tj��|��rt�d|�dk	rtj��|��qS)z^[a-zA-Z0-9_-]+$N)�os�path�isfiler �re�match)�.0rO�Z
expanded_pathr*r+�
<listcomp>�s�z*_parse_deb_config_data.<locals>.<listcomp>�source�rrCZ_source_pathTr%��familyz:Interface %s can only be defined once. Re-defined in '%s'.�methodr7Zether�zdns-�dnsz
dns-search�searchzdns-nameservers�nameserversZbridge_r9�Zbridge_portsZportsZ	bridge_hwZmacr4Zpathcostr5Zportpriozbond-r8F)�
splitlines�strip�
startswith�splitrNrOr �glob�listdirrZload_text_file�abspath�_parse_deb_config_data�dirname�open�readr�NET_CONFIG_OPTIONS�NET_CONFIG_COMMANDSr"�NET_CONFIG_BRIDGE_OPTIONSr!�lower�keys)�ifaces�contents�src_dir�src_pathZcurrif�linercZoptionZparsed_src_dirZdir_contents�entryZsrc_dataZ	abs_entryZnew_src_path�fpZabs_pathr%rYrZ�valZdomainrZ
bridge_optionZbond_optionr*rTr+rg�s�




�
�



�

�

�
��



"







rgzConverting eni datacCsi}t||ddd�t|�S)z=Return a network config representation of what is in eni_dataN)rrrs)rg�_ifaces_to_net_config_data)Zeni_datarpr*r*r+�convert_eni_data7srycs8i�|��D�]\}}|�d�d}|�krf|dkr:d}nd}||gd��|<d|krf|d�|d<||d	d
�}|�d�r�d|d<nd
|d<|�d	�dkr�|d|d<dD]}||kr�||||<q�d|k�rdD]0}||dkr�|d|r�|d||d|<qֈ|d�|�qd�fdd�t��D�d�S)z�Return network config that represents the ifaces data provided.
    ifaces = _parse_deb_config_data(...)
    config = ifaces_to_net_config_data(ifaces)
    state = parse_net_config_data(config).�:r�lo�loopback�physical)r3r1r2r7r6rZ)Z_orig_eni_namer3rCr-Zmanual�staticr
)rrrr\)r^r]Zdns_r2rLcsg|]}�|�qSr*r*)rS�d�Zdevsr*r+rUesz._ifaces_to_net_config_data.<locals>.<listcomp>)�version�config)r�	partitionr>r"r$)rpr1�dataZdevnameZdtyper&Zcopy_key�nr*r�r+rx?s2


rxc@sPeZdZdZddd�Zddd�Zdd	d
�Zddd�Zdee	e
dd
�dd�ZdS)�Rendererz@Renders network information in a /etc/network/interfaces format.NcCs6|si}|�dd�|_|�dd�|_|�dd�|_dS)N�eni_path�etc/network/interfaces�
eni_header�
netrules_pathz(etc/udev/rules.d/70-persistent-net.rules)r>r�r�r�)�selfr�r*r*r+�__init__ks�zRenderer.__init__r_cCsLg}|d}|d}d}ddd�}d}|dd	krD|d
d	krDd}n|ddkr`|d
dkr`d}d}	dD]�}
|rz|
dkrzqh|
dkr�|	d|||
||
f7}	qh|
|krh|
dk�r
d||
kr�|	d7}	n |�d
�dkr�|	d7}	n|	d7}	d
|k�r"|	d||
|d
f7}	qh|	d||
||
f7}	qh|�||	|�|�||	|�|S)a�When rendering routes for an iface, in some cases applying a route
        may result in the route command returning non-zero which produces
        some confusing output for users manually using ifup/ifdown[1].  To
        that end, we will optionally include an '|| true' postfix to each
        route line allowing users to work with ifup/ifdown without using
        --force option.

        We may at somepoint not want to emit this additional postfix, and
        add a 'strict' flag to this function.  When called with strict=True,
        then we will not append the postfix.

        1. http://askubuntu.com/questions/168033/
                 how-to-set-static-routes-in-ubuntu-server
        zpost-up route addzpre-down route delz || trueZgwr)rrr_rz0.0.0.0rz defaultz::rrz -A inet6 default)rrrrz%s %s %srzz	 -A inet6� z -hostz -netz %s/%sz %s %s)r>r")r��route�indentr'rrZor_true�mappingZ
default_gwZ
route_line�kr*r*r+�
_render_routets>�



zRenderer._render_routeFc
	sZt����tt����d�W5QRXg}��di�}��dd�}��dd�}|r\d�d<|�r�t|�D�]�\}}d}	|�d<|d�d	<|�d
d��d
<d}
t|�r�|
d
7}
n
|�d�}	|
�d<|ddks�|ddks�|ddk�rd�d	<|dk	�r~|�rdnd�d<nn|ddk�r0d�d	<d�d<nN|ddk�rPd�d	<d�d<n.t|��r~d�d	<|dk	�r~|�rvdnd�d<d�fdd�|D�k�r�d�d
<tt	�||d�t
�|�t�||	��}|�dg�D]}|�|j
|dd ���q�|�|�qjnZg}d!�k�sd"�k�r&|�d#jf���|�d$jf���|�t�d%dd&��|�|�|S)'NZ	config_idr2z	accept-raZ	wakeonlan�gzethernet-wolr.r3r0r-rCr/�6rZdhcp4Zdhcp6zipv6_dhcpv6-statefulZdhcp�1�0�	accept_razipv6_dhcpv6-statelessZ
ipv6_slaacr~Tcsg|]}d�d|k�qS)zauto %sr1r*)rSrt�r%r*r+rU�sz*Renderer._render_iface.<locals>.<listcomp>�alias�rHZroutesz    )r�zbond-masterzbond-slaveszauto {name}ziface {name} {inet} {mode}r)r.r?)rF�deepcopyr�KeyError�popr>�	enumerater	rrJr,rB�extendr�r"r#)
r�r%rH�sectionsr2r�Zethernet_wolr.r&r?Zsubnet_inetrIr�r*r�r+�
_render_iface�s�




�
�
�




�
��
���
zRenderer._render_ifacec	sdddddd�gd�}|��D]}|�d�dkrt�|�}q|j}|r\d	�|�|d
dd<|j}|r|d	�|�|d
dd
<ddddddd��g}|�|�|��t	|���fdd�d�D](}|�d�dkr�q�|�|j||d��q�|�
�D]}|�|�|��q�d�dd�|D��dS)z1Given state, emit etc/network/interfaces content.r{r}r/r|rC)r3r-)r1r3r/r2r1rr2rrrrLr[�rX�)r|r}r:r8r9r;cs�|d|dfS)Nr3r1r*)r���orderr*r+�<lambda> �z-Renderer._render_interfaces.<locals>.<lambda>)r(r�z

cSsg|]}d�|��qS)�
)r )rS�sr*r*r+rU,sz/Renderer._render_interfaces.<locals>.<listcomp>r�)
Ziter_interfacesr>rFr�rr Zdns_searchdomainsr�r�r$Ziter_routesr"r�)	r��
network_staterHr{r%r^Z
searchdomainsr�r�r*r�r+�_render_interfaces�sF
��	
�
�zRenderer._render_interfaces)r��	templates�returncCs�t�||j�}t�tj�|��|jr,|jnd}t�	|||�
|��|jr�t�||j�}t�tj�|��tj	||�|�dd�dS)Nr_T)r'Z
preserve_mode)
r�target_pathr�rZ
ensure_dirrNrOrhr�Z
write_filer�r�Z_render_persistent_net)r�r�r��targetZfpeni�headerZnetrulesr*r*r+�render_network_state.s�zRenderer.render_network_state)N)r_)F)F)NN)�__name__�
__module__�__qualname__�__doc__r�r�r�r�r
r�dictr�r*r*r*r+r�hs
	
4
R
7��r�cCsRdddg}ddg}|D]}tj|||d�sdSqt�|d�}tj�|�sNdSd	S)
NZifqueryZifupZifdownz/sbinz	/usr/sbin)r]r�Fr�T)rZwhichr�rNrOrP)r�Zexpectedr]�pZenir*r*r+�	availableCs
r�)F)N)"rFrdZloggingrNrQ�
contextlibr�typingrZ	cloudinitrrrZ
cloudinit.netrrr	Zcloudinit.net.network_stater
Z	getLoggerr�r=rlrmrkr,rBrJrgZtimedryrxr�r�r*r*r*r+�<module>sz
�
��<

)\

Zerion Mini Shell 1.0