%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3/dist-packages/cloudinit/net/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3/dist-packages/cloudinit/net/__pycache__/eni.cpython-35.pyc



"�T`%T�@s�ddlZddlZddlZddlZddlmZddlmZddlmZddl	m
Zddl	mZddl	m
Z
eje�Zd	d
ddd
dgZddddddddgZdddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-gZd.d/�Zd0d1�Zd2d3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�ZGd=d>�d>ej�Zdd2d?d@�ZddAdB�ZdS)C�N�)�ParserError)�renderer)�subnet_is_ipv6)�log)�subp)�utilzpre-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
}x�|j�D]�\}}|dkrRq7|dkrvd|d|df}|r7||kr7t|�tkr�d
j|�}d|kr�|jdd�}|jdj||��q7Wt|�S)Nrrr
rrZpointopointrZscope�
dns_search�dns_nameserversz%s/%s�prefix� �_�-z    {0} {1})�items�type�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_subnet&s.	r)c
	Cs�|dkrgSg}dddddddd	d
g	}ddd
g}ddi}|d
dkro|jd�x|j�D]\}}t|�tkr�||r�dnd}|s|||kr�q||dkr|r||kr|tjd|d||�q|||krFx3|D]+}	|jdj|j||�|	��qWq|t|�tkrgdj	|�}|jdj|j||�|��q|Wt
|�S)Nr�controlZ	device_idZdriver�index�inet�mode�name�subnetsr�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.z    {0} {1}r)r4r5r6r7)rrr�bool�LOGZwarningr �getrrr!)
r"r+�ipv4_subnet_mtur$Z
ignore_mapZmultiline_keys�renamesr%r&�vr'r'r(�_iface_add_attrsDsJ		

))r>FcCs�|d}|d}|dkr)d}n#|d
krBd|}n
d|}|j�}|jd|d|i�d	j|�d
j|�g}|r�|jd�r�|jdj|��|S)Nr.r*�auto�hotplugzallow-z
# control-�fullname�cverbz{cverb} {fullname}ziface {fullname} {inet} {mode}r2z    hwaddress {mac_address})r@)�copy�updater r:r)r"r+�render_hwaddressrAr*rBZsubst�linesr'r'r(�_iface_start_entry}s

	

rGcs�d}xl|j�D]^}|j�}|jd�r7q|jd�}|d}|dkr<|d}|jd�s�tjj||�}x�tj|�D]��tj��}	�fdd	�|	D�}	xj|	D]b}
t	|
d
��}|j
�j�}WdQRXtjj|
�}
t||tjj
|
�|
�q�Wq�Wq|dkr�|d}|jd�svtjj||�}x�tj|�D]b�t	�d
��}|j
�j�}WdQRXtjj��}t||tjj
|�|�q�Wq|dkrCxs|dd�D]0}||kr.d
|i||<d||d<qWq|dkr�|dd�\}}}||kr�d
|i||<n&d||kr�td||f��|||d<|||d<|}q|dkr|ddkr�|d}n
|d}|||d<q|tkr7|d|||<q|tkr�|||krag|||<|||jdj|dd���q|jd�rcd||kr�i||d<|dkrg||dd<x�|dd�D]}||ddj|�q�Wqq|dkrqg||dd<xB|dd�D]}||ddj|�q=Wq|jd�rd||kr�i||d<|tkr�|jddd�}|d||d|<qq|d krg||dd!<x+|dd�D]}||dd!j|�q�Wqq|d"krs|dj�d#krZ|d||dd#<q|d||dd#<qq|d$kr�d%||dkr�i||dd%<|d||dd%|d<qq|d&krqd'||dkr�i||dd'<|d||dd'|d<q|jd(�rd)||krFi||d)<|jd(dd�}|d||d)|<qWx2|j�D]$}d||kr�d*||d<q�WdS)+a}Parses the file contents, placing result into ifaces.

    '_source_path' is added to every dictionary entry to define which file
    the configration 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-directoryr�/cs^g|]T}tjjtjj�|��rtjd|�dk	rtjj�|��qS)z^[a-zA-Z0-9_-]+$N)�os�path�isfiler�re�match)�.0rK)�
expanded_pathr'r(�
<listcomp>�s	!z*_parse_deb_config_data.<locals>.<listcomp>�r�sourcer?Z_source_pathTr"��familyz:Interface %s can only be defined once. Re-defined in '%s'.�methodr3Zether�zdns-�dnsz
dns-search�searchzdns-nameservers�nameserversZbridge_r5�Zbridge_portsZportsZ	bridge_hwZmacr0Zpathcostr1Zportpriozbond-r4F)�
splitlines�strip�
startswith�splitrJrKr�glob�listdir�open�read�abspath�_parse_deb_config_data�dirnamer�NET_CONFIG_OPTIONS�NET_CONFIG_COMMANDSr�NET_CONFIG_BRIDGE_OPTIONSr�lower�keys)�ifaces�contents�src_dir�src_pathZcurrif�liner_ZoptionZparsed_src_dirZdir_contents�entry�fpZsrc_dataZ	abs_entryZnew_src_path�abs_pathr"rUrV�valZdomainrZ
bridge_optionZbond_optionr')rPr(re�s�



!
	

+   !!recCsfi}t|d��}|j�j�}WdQRXtjj|�}t||tjj|�|�|S)z+Parses a debian network configuration file.rRN)rbrcr]rJrKrdrerf)rKrlrrrmrsr'r'r(�parse_deb_configsrucCs)i}t||dddd�t|�S)Nrnro)re�_ifaces_to_net_config_data)Zeni_datarlr'r'r(�convert_eni_data"srwcs�i�x~|j�D]p\}}|jd�d}|�kr�|dkrSd}nd}d|d|dgi�|<d	|kr�|d	�|d
<d|d|di}|jd
�r�d
|d<n
d|d<|jd�dkr�|d|d<x(dD] }||kr�||||<q�Wd|krnxBdD]:}||dkr0|d|r0|d||d|<q0W�|dj|�qWddd�fdd�t��D�iS) z�Return network config that represents the ifaces data provided.
    ifaces = parse_deb_config("/etc/network/interfaces")
    config = ifaces_to_net_config_data(ifaces)
    state = parse_net_config_data(config).�:r�lo�loopback�physicalrr.r/r3r2Z_orig_eni_namerVr?r*Zmanual�staticrrrr
rXrZrYZdns_�versionr�configcsg|]}�|�qSr'r')rO�d)�devsr'r(rQPs	z._ifaces_to_net_config_data.<locals>.<listcomp>)znetmaskzgatewayz	broadcast)znameserverszsearch)r�	partitionr:rr!)rlr.�dataZdevnameZdtyper#Zcopy_key�nr')r�r(rv)s4	



rvc@sdeZdZdZddd�Zddd�Zdd	d
�Zddd�Zddd
d�ZdS)�Rendererz@Renders network information in a /etc/network/interfaces format.NcCsO|si}|jdd�|_|jdd�|_|jdd�|_dS)N�eni_pathzetc/network/interfaces�
eni_header�
netrules_pathz(etc/udev/rules.d/70-persistent-net.rules)r:r�r�r�)�selfr~r'r'r(�__init__VszRenderer.__init__r[cCs�g}|d}|d}d}ddddi}d}|dd	kra|d
d	krad}n&|ddkr�|d
dkr�d}d}	xdddgD]�}
|r�|
dkr�q�|
dkr�|	d|||
||
f7}	q�|
|kr�|
dkrrd||
kr|	d7}	n,|jd
�dkr=|	d7}	n
|	d7}	d
|kr�|	d||
|d
f7}	q�|	d||
||
f7}	q�W|j||	|�|j||	|�|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 || truerZgwrr[rz0.0.0.0rz defaultz::rrz -A inet6 defaultz%s %s %srxz	 -A inet6� z -hostz -netz %s/%sz %s %s)r:r)r��route�indentr$r	r
Zor_true�mappingZ
default_gwZ
route_line�kr'r'r(�
_render_route^s<

 	 "


 zRenderer._render_routeFc
s�g}�jdi�}�jdd�}�jdd�}|rLd�d<|rjx�t|�D]\}}d}	|�d<|d�d<|jd	d
��d	<d}
t|�r�|
d7}
n|jd
�}	|
�d<|ddks|ddks|ddkr6d�d<|dk	r�|r)dnd�d<n�|ddkr]d
�d<d�d<n_|ddkr�d
�d<d�d<n8t|�r�d�d<|dk	r�|r�dnd�d<d�fdd�|D�kr�d�d	<tt�|d|�t�|�t�||	��}x6|jdg�D]"}|j|j	|dd��q0W|j
|�q_Wnvg}d �ks�d!�kr�|j
d"j���|j
d#j���|jt�dd$d%d��|j
|�|S)&Nr/z	accept-raZ	wakeonlan�gzethernet-wolr+rr-r*r?r,�6rZdhcp4Zdhcp6zipv6_dhcpv6-statefulZdhcp�1�0�	accept_razipv6_dhcpv6-statelessZ
ipv6_slaacr|Tcs$g|]}d�d|k�qS)zauto %sr.r')rOrp)r"r'r(rQ�s	z*Renderer._render_iface.<locals>.<listcomp>�aliasrEZroutesr�z    zbond-masterzbond-slaveszauto {name}ziface {name} {inet} {mode}rr;)r:�pop�	enumeraterrrGr)r>�extendr�rr )
r�r"rE�sectionsr/r�Zethernet_wolr+r#r;Zsubnet_inetrFr�r')r"r(�
_render_iface�sb



 







 
zRenderer._render_ifacec	s�ddddddddddd	igi}x8|j�D]*}|jd�dkr:tj|�}q:W|j}|r�d
j|�|ddd<|j}|r�d
j|�|ddd
<ddddddddddddi�g}|j|j|��x`t	|j�d�fdd��D]:}|jd�dkrEq'|j|j|d|��q'Wx*|j
�D]}|j|j|��qrWdjdd�|D��dS)z1Given state, emit etc/network/interfaces content.r.ryrr{r,r/rzr*r?rrrrrr6rWr4�r5rTr7�r%cs�|d|dfS)Nrr.r')r�)�orderr'r(�<lambda>�sz-Renderer._render_interfaces.<locals>.<lambda>rEz

cSsg|]}dj|��qS)�
)r)rO�sr'r'r(rQs	z/Renderer._render_interfaces.<locals>.<listcomp>r�)
Ziter_interfacesr:rC�deepcopyrrZdns_searchdomainsr�r�r!Ziter_routesrr�)	r��
network_staterEryr"rZZ
searchdomainsr�r�r')r�r(�_render_interfaces�s8		zRenderer._render_interfacescCs�tj||j�}tjtjj|��|jr@|jnd}tj	|||j
|��|jr�tj||j�}tjtjj|��tj	||j|��dS)Nr[)
r�target_pathr�rZ
ensure_dirrJrKrfr�Z
write_filer�r�Z_render_persistent_net)r�r�Z	templates�targetZfpeni�headerZnetrulesr'r'r(�render_network_states		zRenderer.render_network_state)	�__name__�
__module__�__qualname__�__doc__r�r�r�r�r�r'r'r'r(r�Ss4G-r�cCsid}tdd|d|ddi�}|s3d}|jd�sL|d7}|j|d|�}||S)	Nzetc/network/interfacesr~r�r�r�r[r�rE)r��endswithr�)r�r�rEr�rrmr'r'r(�network_state_to_enis
r�cCswdddg}ddg}x-|D]%}tj|d|d|�s"dSq"Wtj|d	�}tjj|�ssdSd
S)NZifqueryZifupZifdownz/sbinz	/usr/sbinrYr�Fzetc/network/interfacesT)rZwhichr�rJrKrL)r�ZexpectedrY�pZenir'r'r(�	available$s
r�)rCr`rJrMr[rrr�rZ	cloudinitrZloggingrrZ	getLoggerr�r9rhrirgr)r>rGrerurwrvr�r�r�r'r'r'r(�<module>s69�*�

Zerion Mini Shell 1.0