%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__/sysconfig.cpython-35.pyc



"�T`j��@s�ddlZddlZddlZddlZddlmZddlmZddlm	Z	ddlm
Z
ddlmZddlm
Z
dd	lmZdd
lmZmZmZmZeje�ZdZdd
ddgZddd�Zdd�Zdd�Zdd�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd �d ej"�Z"d!d"�Z#dd#d$�Z$dd%d&�Z%dd'd(�Z&dS))�N)�	ConfigObj)�log)�util)�subp)�networkmanager_conf)�resolv_conf�)�renderer)�is_ipv6_addr�net_prefix_to_ipv4_mask�subnet_is_ipv6�IPV6_DYNAMIC_TYPESz'/etc/NetworkManager/NetworkManager.confZcentosZfedora�rhel�suse�#cCsfddg}xJtdt|��D]3}||rK|d||||<q"|||<q"Wdj|�S)NzBCreated by cloud-init on instance boot automatically, do not edit.�r� �
)�range�len�join)�sep�lines�i�r�9/usr/lib/python3/dist-packages/cloudinit/net/sysconfig.py�_make_headers	
rcCs$d}|ddko#|d|kS)N�::�0.0.0.0�prefixr�network)rrr)�routeZdefault_netsrrr�_is_default_route&sr"cCsGtjd|�r?|jd�r4|jd�r4|Sd|Sn|SdS)Nz\s�"z"%s")�re�search�
startswith�endswith)�valuerrr�_quote_value+s
r)cCs�t|�}d|kr�d|dkrCd|ddkrQdSng|dd<t|ddt�r�|ddjd�n|dddg|dd<|j�tjd�dS)zEAdd ifcfg-rh to NetworkManager.cfg plugins if main section is present�mainZpluginszifcfg-rhNz'Enabled ifcfg-rh NetworkManager plugins)r�
isinstance�list�append�write�LOG�debug)�path�configrrr�enable_ifcfg_rh6s
r3c@s�eZdZdZddddiZdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�	ConfigMapz!Sysconfig like dictionary object.T�yesF�nocCs
i|_dS)N)�_conf)�selfrrr�__init__QszConfigMap.__init__cCs||j|<dS)N)r7)r8�keyr(rrr�__setitem__TszConfigMap.__setitem__cCs|j|S)N)r7)r8r:rrr�__getitem__WszConfigMap.__getitem__cCs|jj|�S)N)r7�get)r8r:rrrr=Zsz
ConfigMap.getcCs
||jkS)N)r7)r8r:rrr�__contains__]szConfigMap.__contains__cCs|jj|d�dS)N)r7�pop)r8r:rrr�drop`szConfigMap.dropcCs
t|j�S)N)rr7)r8rrr�__len__cszConfigMap.__len__cCsdS)z6Skip the pair key, value if it matches a certain rule.Fr)r8r:�valrrr�skip_key_valuefszConfigMap.skip_key_valuecCs�tj�}|jt��|jr2|jd�x�t|jj��D]|}|j|}|j||�rpqHt|t	�r�|j
|}t|t�s�t|�}|jd|t|�f�qHW|j
�S)Nrz%s=%s
)�io�StringIOr.rr7�sorted�keysrCr+�bool�	_bool_map�strr)�getvalue)r8�bufr:r(rrr�	to_stringjs	


!zConfigMap.to_stringcCs|jj|�dS)N)r7�update)r8ZupdatesrrrrNzszConfigMap.updateN)�__name__�
__module__�__qualname__�__doc__rIr9r;r<r=r>r@rArCrMrNrrrrr4Hsr4csseZdZdZ�fdd�Zdd�Zedd��Zedd	��Zd
d�Z	dd
d�Z
�S)�Routez!Represents a route configuration.csVtt|�j�d|_d|_d|_||_||_||_||_	dS)NrF)
�superrSr9�last_idx�has_set_default_ipv4�has_set_default_ipv6�_route_name�_base_sysconf_dir�route_fn_tpl_ipv4�route_fn_tpl_ipv6)r8Z
route_name�base_sysconf_dir�ipv4_tpl�ipv6_tpl)�	__class__rrr9�s						zRoute.__init__cCs[t|j|j|j|j�}|jj�|_|j|_|j|_|j	|_	|S)N)
rSrXrYrZr[r7�copyrUrVrW)r8�rrrrr`�sz
Route.copycCs|jd|jd|jiS)N�base�name)rZrYrX)r8rrr�	path_ipv4�szRoute.path_ipv4cCs|jd|jd|jiS)Nrbrc)r[rYrX)r8rrr�	path_ipv6�szRoute.path_ipv6cCs
d|kS)N�:r)r8�addressrrr�
is_ipv6_route�szRoute.is_ipv6_route�ipv4cCsx|dkr"tdt|���tj�}|jt��|jrT|jd�d}xt|jj��D]�}d|krp|j	dd�}t|j|�}|dkr�|j
|�r�t|jd|�}t|jd	|�}|d}|jd
dt|�t|�f�|jd
d	t|�t|�f�|jd
dt|�t|�f�d|}	|	|jkrjt|jd|�}
|jd
dt|�t|
�f�qp|dkrp|j
|�rpt|jd|�}t|jd	|�}d||jkrAdt|jd|�nd}
|jd
||||
|jf�qpW|j
�S)Nri�ipv6zUnknown protocol '%s'rrZADDRESSr�NETMASK�GATEWAYz%s=%s
�METRICzmetric z%s/%s via %s %s dev %s
)rirj���)�
ValueErrorrJrDrEr.rr7rFrG�replacerhr)rXrK)r8�protorLZreindexr:�indexZ
address_valueZ
netmask_valueZ
gateway_value�
metric_keyZmetric_valuerrrrM�sJ	


4zRoute.to_string)rOrPrQrRr9r`�propertyrdrerhrMrr)r_rrS~s	rSc
s�eZdZdZdddddddd	d
diZd�fdd
�Zedd��Zejdd��Zedd��Z	e	jdd��Z	edd��Z
dddd�Zdd�Z�S)�NetInterfacezERepresents a sysconfig/networking-script (and its config + children).ZethernetZEthernet�bondZBond�bridgeZBridge�
infinibandZ
InfiniBand�vlan�Vlancs�tt|�j�g|_||_|jjd�}t||d|jd�d|jd��|_|jjd�|_||_	||_
||jd<||_dS)N�route_templatesr]rir^rj�iface_templates�DEVICE)
rTrur9�children�	templatesr=rS�routes�iface_fn_tpl�kind�_iface_namer7rY)r8�
iface_namer\rr�Z	route_tpl)r_rrr9�s				
zNetInterface.__init__cCs|jS)N)r�)r8rrrrc�szNetInterface.namecCs||_||jd<dS)Nr})r�r7)r8r�rrrrc�s	cCs|jS)N)�_kind)r8rrrr��szNetInterface.kindcCs<||jkrt|��||_|j||jd<dS)N�TYPE)�iface_typesror�r7)r8r�rrrr��s	cCs|jd|jd|jiS)Nrbrc)r�rYrc)r8rrrr1szNetInterface.pathFcCsjt|j|j|jd|j�}|jj�|_|rNt|j�|_|rf|j	j�|_	|S)Nr�)
rurcrYrr�r7r`r,r~r�)r8Z
copy_childrenZcopy_routes�crrrr`szNetInterface.copycCs |dkr|dkrdSdS)Nr�rzTFr)r8r:rBrrrrCszNetInterface.skip_key_value)
rOrPrQrRr�r9rtrc�setterr�r1r`rCrr)r_rru�s
ruc@s�eZdZdZddddddddd	id
dddd
iiZdddddddddddddid
ddddddddddiiZedYdZd[d\d]d^d_d`dadbdcdddedfdgg�ZiZd<d=d>�Z	e
d?d@��Ze
dAdB��Ze
dCdD��Z
e
dEdF��Ze
dGdH��Ze
dIdJ��Ze
dKdL��Zed<dMdN��Zed<dOdP��Ze
dQdR��Ze
dSdT��Ze
d<dUdV��Zd<d<dWdX�Zd<S)h�Rendererz7Renders network information in a /etc/sysconfig format.r�ONBOOTTZUSERCTLFZ
NM_CONTROLLED�	BOOTPROTO�noner�static�	STARTMODEZautoz	accept-ra�IPV6_FORCE_ACCEPT_RAZ
bridge_stpZSTPZ
bridge_ageingZAGEINGZbridge_bridgeprioZPRIO�mac_addressZHWADDR�mtu�MTU�
BRIDGE_STPZBRIDGE_AGEINGTIMEZBRIDGE_PRIORITY�LLADDR�	bond_mode�mode=%s�bond_xmit_hash_policy�xmit_hash_policy=%s�bond_miimon�	miimon=%s�bond_min_links�min_links=%s�bond_arp_interval�arp_interval=%s�bond_arp_ip_target�arp_ip_target=%s�bond_arp_validate�arp_validate=%s�bond_ad_select�ad_select=%s�bond_num_grat_arp�num_grat_arp=%s�bond_downdelay�downdelay=%s�bond_updelay�
updelay=%s�bond_lacp_rate�lacp_rate=%s�bond_fail_over_mac�fail_over_mac=%s�bond_primary�
primary=%s�bond_primary_reselect�primary_reselect=%sNcCs�|si}|jdd�|_|jdd�|_|jdd�|_d}|jd|�|_d	|jd	�d
|jd
�d|jd�i|_|jdd
�|_dS)N�sysconf_dirz
etc/sysconfig�
netrules_pathz(etc/udev/rules.d/70-persistent-net.rules�dns_pathzetc/resolv.confz,etc/NetworkManager/conf.d/99-cloud-init.conf�networkmanager_conf_path�controlr|r{�flavorr)r=r�r�r�r�rr�)r8r2�nm_conf_pathrrrr9Qs	zRenderer.__init__cCs�tj|jj|i��}|j|�xnd
D]f}|j|�}|dk	r2|dkrr|ddkrrq2|j|j|�}|r2|||<q2Wd|kr�|dr�|ddkr�d|d	<dS)Nr�r��	accept-ra�type�physicalrxZ	wakeonlanzwol gZETHTOOL_OPTS)r�r�r�)r�z
infiniband)r`�deepcopy�iface_defaultsr=rN�cfg_key_maps)�cls�iface�	iface_cfgr�Zflavor_defaults�old_keyZ	old_value�new_keyrrr�_render_iface_sharedbs

zRenderer._render_iface_sharedcCs�|dkr<d|d<d|krFd|d<|jd�n
d|d<x�t|dt|j��D]�\}}d}|jd	�}|d
ks�|dkr5|dkr�|ddkr�d|d<n
d
|d<d
|d<q�|dkr|dkrd|d<d|d<d|d<d|d<q�d|d<d|d<nx|dkr�|dkr�|ddkrjd|d<n
d
|d<d|d<q�d|d<d|d<d|d<d|d<n|dkr|dkr�|ddkr�d|d<n
d
|d<d|d<q�d|d<d|d<n�|d@kr`|d}	d|d<|dkr�|dkr�|	d
kr�d|d<nM|dAkrVt|�r�|dkr�d}d|d<d|kr't||ko�|d||k�}
|
r�tjd|j	|||d�t|�r|dkrq'|d||<n|d||<t|�r�|dkr�d|d<d|d<nW|dkr�|dkr�tj
d |�q�||k|d!<ntd"||j	f��|jd#�dkrb|dkr�d|d$<qbd|d!<qbWdB}dC}x�t|dt|j��D]�\}}|jd	�}d&|krR|dkrR|d&|d'<|dDkr�|dkr|r|ddkrd|d(<qq|tkr�qq|dEkrt|�rr|d%}d)|d*|d+f}
|d,kr|dkr|
|d-<qo|
|d.<q�|d%kr@|dkr3|
|d/<qo|
|d0<q�|dkr]|
|d1|<q�|d0d2|
7<nR|d%}|d,kr�d3n	t
|�}|d*|d4|<t|d+�|d5|<d6|kr|dkrd|d7<t|d6�r|d6|d8<n|d6|d9<d:|krD|dkrDd2j|d:�|d;<d<|kr|dkrt|d<�d=kr�tj
d>|j	t|d<��x?t|d<dd=�d%�D] \}}||d?t
|�<q�WqWdS)FNrr�r��BRIDGE�dhcpr��startr�r�Zdhcp6zipv6_dhcpv6-stateful�dhcp4ZmanagedZDHCLIENT6_MODErTZDHCPV6CZIPV6INITFZ
IPV6_AUTOCONFzipv6_dhcpv6-stateless�infoz-SZDHCPV6C_OPTIONSZ
ipv6_slaac�static6ZIPV6_MTUr�zZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.r�Zmanualz Unknown subnet type setting "%s"r�z1Unknown subnet type '%s' found for interface '%s'r�r�r�metricrm�DHCLIENT_SET_DEFAULT_ROUTEz%s/%srgrrZIPADDR6ZIPV6ADDRZ	IPADDR6_1ZIPV6ADDR_SECONDARIESz
IPADDR6_%drrZIPADDRrk�gateway�DEFROUTE�IPV6_DEFAULTGWrlZ
dns_searchZDOMAIN�dns_nameservers�z6%s has %d entries in dns_nameservers. Only 3 are used.ZDNS)r�r�)r�r�rnrn)r�r�)r�r�)r@�	enumeraterr~r=rrHr/Zwarningrcr0ror
rJrr
r)r�r��subnets�has_default_router�r�subnetZmtu_key�subnet_typeZbootproto_inZmtu_mismatchZ
ipv4_indexZ
ipv6_indexZ	ipv6_cidrZsuff�krrr�_render_subnetsws�


(



























(








	*zRenderer._render_subnetscCs|dkrdSx�t|dt|j��D]�\}}|jd�}x�|jdg�D]�}|jd�p|t|d�}	t|�rp|tkrp|jd�r�|js�|jd�r�|jr�t	d|j
��d	}
d
}d}d|d
<|ddkrd|d<d|krS|	r<|d|d<d|_n|d|d<d|_d|kr|d|d<qZd|j}
d|j}d|j}d|j}
|jd7_xRd|
fd|
fd|fd|fgD]&\}}||kr�||||<q�WqZWq,WdS)Nrr�r�r�rjr�riz?Duplicate declaration of default route found for interface '%s'ZGATEWAY0ZNETMASK0ZADDRESS0Tr�r�r�r�r�r�rlr�rmz	GATEWAY%sz	NETMASK%sz	ADDRESS%szMETRIC%srZnetmaskr )zdhcpzdhcp4)r�rr~r=r
r"r
rVrWrorcrU)r�r��	route_cfgr�r��_r�r�r!Zis_ipv6Zgw_keyZnm_keyZaddr_keyrsr�r�rrr�_render_subnet_routes3sN(			


	



		zRenderer._render_subnet_routescCs�g}x�|jD]�\}}||jdd�g}xZ|D]R}||kr;||}t|ttf�r{dj|�}|j||�Pq;WqW|r�dj|�|d<dS)Nr��-rZBONDING_OPTS)�
bond_tpl_optsrpr+�tupler,rr-)r�r�r�Z	bond_optsZbond_keyZ	value_tplZ	bond_keysZ
bond_valuerrr�_render_bonding_optsps

	zRenderer._render_bonding_optsc
Cs�tj}xu|j|�D]d}|d}|jdg�}||}|j}	|j|||j|�|j||	||�qWdS)Nrcr�)r	Zfilter_by_physical�iter_interfacesr=r�r�r�r�)
r��
network_state�iface_contentsr�Zphysical_filterr�r��
iface_subnetsr�r�rrr�_render_physical_interfaces�s	

	z$Renderer._render_physical_interfacescs�tjd�}tjd�}x�|j|�D]�}|d�|�}|j||�|g}|j|j�x-|D]%}	d|	d<|dkrxd|	_qxW|jd�r�|dkr�|jd�|d<n|jd�|d	<|jd
g�}
|j	}|j
||
|j|�|j|||
|�t
�fdd�|j|�D��}x�t|�D]z\}
}|dkr�d
|
}n
d|
}|||<||}|dkr�d|d<d|d<qd�|d<d|d<qdWq.WdS)Nrvzbond-masterrcTZBONDING_MASTERrr�r��MACADDRr�cs*g|] }|d�kr|d�qS)zbond-masterrcr)�.0Zslave_iface)r�rr�
<listcomp>�s	z4Renderer._render_bond_interfaces.<locals>.<listcomp>zBONDING_SLAVE_%szBONDING_SLAVE%sr�r�Zhotplugr�ZMASTERZSLAVE)r	�filter_by_typeZfilter_by_attrr�r��extendr~r�r=r�r�r�r�rFr�)r�r�r�r�Zbond_filterZslave_filterr�r�Zmaster_cfgsZ
master_cfgr�r�Zbond_slavesrrZ
bond_slaveZslavestrZ	slave_cfgr)r�r�_render_bond_interfaces�sJ

	


	






z Renderer._render_bond_interfacesc
Cs;tjd�}x%|j|�D]}|d}||}|dkr�|jd�}|rd||d<|d|jd��|d<ned|d	<d|_|d
}	t|	|d�}
||
kr�tjd||	dj	|
��|	|d
<|jdg�}|j
}|j|||j|�|j
||||�qWdS)Nryrcr�vlan_idZVLAN_ID�.ZETHERDEVICETZVLANzvlan-raw-devicezIName '%s' for vlan '%s' is not officially supportedby RHEL. Supported: %srZPHYSDEVr�)r	r�r�r=�rfindr��_supported_vlan_namesr/r�rr�r�r�r�)
r�r�r�r�Zvlan_filterr�r�r�r��rdevZ	supportedr�r�rrr�_render_vlan_interfaces�s2


 
	

	z Renderer._render_vlan_interfacescCs�tt|j�t|j�g�s(dStjd�}|rgtjj|�rgtjt	j
|��}x|jD]}|j|�qqWx|jD]}|j|�q�Wt
d�}t|�}|j|�s�|d|}|S)Nr�;r)�anyrr�Zdns_searchdomainsrZ
ResolvConf�osr1�isfilerZ	load_fileZadd_nameserverZadd_search_domainrrJr&)r��existing_dns_path�contentZ
nameserverZsearchdomain�headerZcontent_strrrr�_render_dns�szRenderer._render_dnscCsrtjd�}|jr+|jddd�t|�dkrAdSdjt�ddj|j��dg�}|S)Nrr*Zdnsr�rr)rZNetworkManagerConfr�Zset_section_keypairrrrr.)r�rr��outrrr�_render_networkmanager_confs	-z$Renderer._render_networkmanager_confcCs dd�|j|j�D�}tjd�}x�|j|�D]�}|d}||}|dkrnd|_x4|j�D]&\}	}
|	|kr{||	||
<q{W|dkr�d|kr�|jd�r�d|d<n
d|d<|jd	�rd
}|dkr
d}|jd	�||<|dkr[|jdg�r[d
dj|jd��|d<xp|jdg�D]\}||}
|
g}|j|
j	�x0|D](}|}|dkr�d}||d<q�WqnW|jdg�}|j
}|j|||j|�|j
||||�q?WdS)NcSs.i|]$\}}|jd�r||�qS)rw)r&)r�Zold_kZnew_krrr�
<dictcomp>s		z6Renderer._render_bridge_interfaces.<locals>.<dictcomp>rwrcrr�ZonZoffr�r�Z	LLADDRESSZbridge_portsz%srZBRIDGE_PORTSr5r�r�)r��itemsr	r�r�r�r=rr�r~r�r�r�r�)r�r�r�r�Zbridge_key_mapZ
bridge_filterr�r�r�r�r�r:Zbridged_iface_nameZbridged_cfgZbridged_cfgsZ
bridge_cfgZbridge_valuer�r�rrr�_render_bridge_interfacessR	

	

	
	
	z"Renderer._render_bridge_interfacesc
Cs�tjd�}x~|j|�D]m}|d}||}d|_|jdg�}|j}	|j|||j|�|j||	||�qWdS)Nrxrcr�)	r	r�r�r�r=r�r�r�r�)
r�r�r�r�Z	ib_filterr�r�r�r�r�rrr�_render_ib_interfacesHs

		zRenderer._render_ib_interfacescCs�|s|j}i}x�|j�D]x}|ddkr;q"|d}t|||�}|dkr}|jd�|jd�|j|||�|||<q"W|j|||�|j|||�|j|||�|j|||�|j	|||�i}	x�|j
�D]�\}}|s+|jrk|j�|	|j
<x*|jD]}|rH|j�|	|j
<qHW|jrxWt|jj|jjgddg�D].\}
}|
|	kr�|jj|�|	|
<q�WqW|	S)	z3Given state, return /etc/sysconfig files + contentsr�Zloopbackrcrr}r�rirj)rr�rur@r�r�r�r�r�rr�r~rMr1r��ziprdre)r�r\r�r�rr�r�r�r��contentsZcpathrqrrr�_render_sysconfigYs@	


	zRenderer._render_sysconfigcCs|s|j}d}tj||j�}xE|j|||jd|�j�D]\}}tj|||�qOW|j	r�tj||j	�}|j
|d|�}	|	r�tj||	|�|jrtj||j�}
|j||�}|rtj|
||�|j
rG|j|�}tj||j
�}
tj|
||�td|�rottj|dt��tj||jd��}|jd�rtjtjj|��t�dg}|jr�|jd	�|jd
�tj|dj|�d|�dS)Ni�rr��targetr1r�r zNETWORKING=yeszNETWORKING_IPV6=yeszIPV6_AUTOCONF=nor)rr�target_pathr�rr�r�rZ
write_filer�r�r�r�r�Z_render_persistent_net�available_nmr3�NM_CFG_FILEr=r'Z
ensure_dirr�r1�dirnamerZuse_ipv6r-r)r8r�rrZ	file_moder\r1�datar�Zresolv_contentr�Znm_conf_contentZnetrules_contentr�Zsysconfig_pathZnetcfgrrr�render_network_statesH									

	zRenderer.render_network_state)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rOrPrQrRr�r�r�r�rr9�classmethodr�r�r�r�r�r�r��staticmethodr�r�r�rrr
rrrrr�sf		�=8"9$r�cs��fdd�dD�S)ziReturn list of supported names for vlan devices per RHEL doc
    11.5. Naming Scheme for VLAN Interfaces.cs.g|]$}|jd�dt����qS)r��vid)�format�int)r��v)r�r
rrr��s	z)_supported_vlan_names.<locals>.<listcomp>�{rdev}{vid:04}�{rdev}{vid}�{rdev}.{vid:04}�{rdev}.{vid})rrrrr)r�r
r)r�r
rr��sr�cCsDtd|�}td|�}tj�dtkoCt||g�S)NrZvariant)�available_sysconfigrrZsystem_info�
KNOWN_DISTROSr�)r�	sysconfigZnmrrr�	available�srcCs�ddg}ddg}x-|D]%}tj|d|d|�sdSqWdd	g}x0|D](}tjjtj||��r[d
Sq[WdS)NZifupZifdownz/sbinz	/usr/sbinr%rFz/etc/sysconfig/network-scripts/network-functionszetc/sysconfig/configT)rZwhichr�r1r�r)rZexpectedr%�pZexpected_pathsrrrr�s
	
rcCs)tjjtj|dt��s%dSdS)Nr1FT)r�r1r�rrr)rrrrr�s!r)'r`rDr�r$Z	configobjrZ	cloudinitrZloggingrrZcloudinit.distros.parsersrrrr	r�r
rrr
Z	getLoggerrOr/rrrr"r)r3�objectr4rSrur�r�rrrrrrr�<module>s8"
6YD���	

Zerion Mini Shell 1.0