%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core18/2887/usr/lib/python3/dist-packages/cloudinit/net/__pycache__/
Upload File :
Create Path :
Current File : //snap/core18/2887/usr/lib/python3/dist-packages/cloudinit/net/__pycache__/sysconfig.cpython-36.pyc

3

�Ad.��@sddlZddlZddlZddlZddlmZmZddlmZ	ddlm
Z
mZddlm
Z
mZddlmZmZmZmZmZddlmZe	je�Zdd	d
ddd
ddddddddgZd)dd�Zdd�Zdd�ZGdd�d�ZGdd �d e�ZGd!d"�d"e�Z Gd#d$�d$ej!�Z!d%d&�Z"d*d'd(�Z#dS)+�N)�Mapping�Optional)�log)�subp�util)�networkmanager_conf�resolv_conf)�IPV6_DYNAMIC_TYPES�is_ipv6_address�net_prefix_to_ipv4_mask�renderer�subnet_is_ipv6)�NetworkStateZ	almalinuxZcentosZ
cloudlinuxZ	eurolinuxZfedoraZmiraclelinuxZ	openEulerZOpenCloudOSZopenmandriva�rhelZrocky�suseZ	TencentOSZ	virtuozzo�#cCsPddg}x<tdt|��D]*}||r:|d||||<q|||<qWdj|�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_header(srcCsd}|ddko|d|kS)N�::�0.0.0.0�prefixr�network)rrr)�routeZdefault_netsrrr�_is_default_route5sr#cCs6tjd|�r.|jd�r$|jd�r$|Sd|Sn|SdS)Nz\s�"z"%s")�re�search�
startswith�endswith)�valuerrr�_quote_value:s

r*c@sjeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�	ConfigMapz!Sysconfig like dictionary object.�yes�no)TFcCs
i|_dS)N)�_conf)�selfrrr�__init__NszConfigMap.__init__cCs||j|<dS)N)r.)r/�keyr)rrr�__setitem__QszConfigMap.__setitem__cCs
|j|S)N)r.)r/r1rrr�__getitem__TszConfigMap.__getitem__cCs|jj|�S)N)r.�get)r/r1rrrr4Wsz
ConfigMap.getcCs
||jkS)N)r.)r/r1rrr�__contains__ZszConfigMap.__contains__cCs|jj|d�dS)N)r.�pop)r/r1rrr�drop]szConfigMap.dropcCs
t|j�S)N)rr.)r/rrr�__len__`szConfigMap.__len__cCsdS)z6Skip the pair key, value if it matches a certain rule.Fr)r/r1�valrrr�skip_key_valuecszConfigMap.skip_key_valuecCs�tj�}|jt��|jr$|jd�xjt|jj��D]X}|j|}|j||�rPq4t|t	�rd|j
|}t|t�svt|�}|jd|t|�f�q4W|j
�S)Nrz%s=%s
)�io�StringIO�writerr.�sorted�keysr:�
isinstance�bool�	_bool_map�strr*�getvalue)r/�bufr1r)rrr�	to_stringgs




zConfigMap.to_stringcCs|jj|�dS)N)r.�update)r/ZupdatesrrrrGwszConfigMap.updateN)�__name__�
__module__�__qualname__�__doc__rBr0r2r3r4r5r7r8r:rFrGrrrrr+Esr+csReZdZdZ�fdd�Zdd�Zedd��Zedd	��Zd
d�Z	dd
d�Z
�ZS)�Routez!Represents a route configuration.cs<tt|�j�d|_d|_d|_||_||_||_||_	dS)N�F)
�superrLr0�last_idx�has_set_default_ipv4�has_set_default_ipv6�_route_name�_base_sysconf_dir�route_fn_tpl_ipv4�route_fn_tpl_ipv6)r/Z
route_name�base_sysconf_dir�ipv4_tpl�ipv6_tpl)�	__class__rrr0~szRoute.__init__cCs>t|j|j|j|j�}|jj�|_|j|_|j|_|j	|_	|S)N)
rLrRrSrTrUr.�copyrOrPrQ)r/�rrrrrZ�sz
Route.copycCs|j|j|jd�S)N)�base�name)rTrSrR)r/rrr�	path_ipv4�szRoute.path_ipv4cCs|j|j|jd�S)N)r\r])rUrSrR)r/rrr�	path_ipv6�szRoute.path_ipv6cCsd|kS)N�:r)r/�addressrrr�
is_ipv6_route�szRoute.is_ipv6_route�ipv4cCs�|dkrtdt|���tj�}|jt��|jr<|jd�d}�x�t|jj��D�]t}d|krbqR|j	dd�}t|j|�}t|jd|�}|dko�|j
|��r^t|jd	|�}|d}|jd
dt|�t|�f�|jd
dt|�t|�f�|jd
d	t|�t|�f�d|}	|	|jk�r�t|jd|�}
|jd
dt|�t|
�f�qR|dkrR|j
|�rRt|jd|���}d||jk�r�d
t|jd|�nd}
|jd||||
|jf�qRW|j
�S)Nrc�ipv6zUnknown protocol '%s'rrM�ADDRESSr�GATEWAY�NETMASKz%s=%s
�METRIC�PREFIXzmetric z%s/%s via %s %s dev %s
)rcrd���)�
ValueErrorrCr;r<r=rr.r>r?�replacerbr*rRrD)r/�protorEZreindexr1�indexZ
address_valueZ
gateway_valueZ
netmask_valueZ
metric_keyZmetric_valueZprefix_valuerrrrF�sV
&zRoute.to_string)rc)rHrIrJrKr0rZ�propertyr^r_rbrF�
__classcell__rr)rYrrL{s

rLcs�eZdZdZdddddd�Zd�fd	d
�	Zedd��Zejd
d��Zedd��Z	e	jdd��Z	edd��Z
ddd�Zdd�Z�Z
S)�NetInterfacezERepresents a sysconfig/networking-script (and its config + children).ZEthernetZBondZBridgeZ
InfiniBand�Vlan)�ethernet�bond�bridge�
infiniband�vlanrscsrtt|�j�g|_||_|jjd�}t|||jd�|jd�d�|_|jjd�|_||_	||_
||jd<||_dS)N�route_templatesrcrd)rWrX�iface_templates�DEVICE)
rNrqr0�children�	templatesr4rL�routes�iface_fn_tpl�kind�_iface_namer.rS)r/�
iface_namerVr|rZ	route_tpl)rYrrr0�s
zNetInterface.__init__cCs|jS)N)r�)r/rrrr]szNetInterface.namecCs||_||jd<dS)Nrz)r�r.)r/r�rrrr]scCs|jS)N)�_kind)r/rrrrszNetInterface.kindcCs,||jkrt|��||_|j||jd<dS)N�TYPE)�iface_typesrkr�r.)r/rrrrrs
cCs|j|j|jd�S)N)r\r])r~rSr])r/rrr�pathszNetInterface.pathFcCsHt|j|j|j|jd�}|jj�|_|r4t|j�|_|rD|j	j�|_	|S)N)r)
rqr]rSr|r�r.rZ�listr{r})r/Z
copy_childrenZcopy_routes�crrrrZ"szNetInterface.copycCs|dkr|dkrdSdS)Nr�rrTFr)r/r1r9rrrr:-szNetInterface.skip_key_value)rs)FF)rHrIrJrKr�r0ror]�setterrr�rZr:rprr)rYrrq�s
rqc@s6eZdZUdZddddd�ddd�d	�Zd
ddd
ddd�dddddd�d	�ZedRdSdTdUdVdWdXdYdZd[d\d]d^d_d`g�ZiZe	dad5d6�Z
ed7d8��Zed9d:��Z
ed;d<��Zed=d>��Zed?d@��ZedAdB��ZedCdD��ZedbdEdF��ZedcdGdH��ZedIdJ��ZedKdL��ZedddMdN��Zdeeee	d4dO�dPdQ�Zd4S)f�Rendererz7Renders network information in a /etc/sysconfig format.TF�none)�ONBOOTZUSERCTLZ
NM_CONTROLLED�	BOOTPROTO�static�auto)r��	STARTMODE)rr�IPV6_FORCE_ACCEPT_RAZSTPZAGEINGZPRIOZHWADDR�MTU)z	accept-ra�
bridge_stp�
bridge_ageing�bridge_bridgeprio�mac_address�mtu�
BRIDGE_STPZBRIDGE_AGEINGTIMEZBRIDGE_PRIORITY�LLADDR)r�r�r�r�r��	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=%sNcCsv|si}|jdd�|_|jdd�|_|jdd�|_d}|jd|�|_|jd	�|jd
�|jd�d�|_|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�controlryrx)r�ryrx�flavorr)r4r�r�r�r�r|r�)r/�config�nm_conf_pathrrrr0ps

zRenderer.__init__cCs�tj|jj|i��}|j|�xPd
D]H}|j|�}|dk	r$|dkrP|ddkrPq$|j|j|�}|r$|||<q$Wd|kr�|dr�|ddkr�d|d	<dS)Nr�r��	accept-ra�type�physicalrvZ	wakeonlanzwol gZETHTOOL_OPTS)r�r�r�)r�rv)rZ�deepcopy�iface_defaultsr4rG�cfg_key_maps)�cls�iface�	iface_cfgr�Zflavor_defaults�old_keyZ	old_value�new_keyrrr�_render_iface_shared�s 


zRenderer._render_iface_sharedcCs�|dkr,d|d<d|kr4d|d<|jd�nd|d<�x�t|t|j�d�D�]�\}}d}|jd	�}|d
ksr|dkr�|dkr�|ddkr�d|d<nd
|d<d
|d<nB|dkr�|dkr�d|d<d|d<d|d<d|d<nd|d<d|d<�n|dk�rJ|dk�r&|ddk�rd|d<nd
|d<d|d<n d|d<d|d<d|d<d|d<�n�|dk�r�|dk�r�|ddk�rvd|d<nd
|d<d|d<nd|d<d|d<�nN|d@k�r�|d}	d|d<|dk�r�|dk�r�|	d
k�r�d|d<�n
|dAk�r�t|��r
|dk�r
d}d|d<d|k�r�t||k�o.|d||k�}
|
�rRtjd|j	|||d�t|��rv|dk�rhn|d||<n|d||<t|��r�|dk�r�d|d<d|d<nB|dk�r�|dk�r�tj
d |�n||k|d!<ntd"||j	f��|jd#�dkrJ|dk�rd|d$<qJd|d!<qJWdB}dC}�xdt|t|j�d�D�]L\}}|jd	�}d&|k�rj|dk�rj|d&|d'<|dDk�r�|dk�r6|�r6|ddk�r6d|d(<�q6�q6|tk�r��q6�q6|dEk�r6t|��rb|d%}d)|d*|d+f}
|d,k�r|dk�r|
|d-<n|
|d.<nT|d%k�r4|dk�r*|
|d/<n|
|d0<n,|dk�rL|
|d1|<n|d0d2|
7<nB|d%}|d,k�rxd3nt
|�}|d*|d4|<t|d+�|d5|<d6|k�r�|dk�r�d|d7<t|d6��r�|d6|d8<n|d6|d9<d:|k�r|dk�rd2j|d:�|d;<d<|k�r6|dk�r6t|d<�d=k�rLtj
d>|j	t|d<��x4t|d<dd=�d%�D]\}}||d?t
|�<�qdW�q6WdS)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�rM�metricrh�DHCLIENT_SET_DEFAULT_ROUTEz%s/%srar rZIPADDR6ZIPV6ADDRZ	IPADDR6_1ZIPV6ADDR_SECONDARIESz
IPADDR6_%drrZIPADDRrg�gateway�DEFROUTE�IPV6_DEFAULTGWrfZ
dns_searchZDOMAIN�dns_nameservers�z6%s has %d entries in dns_nameservers. Only 3 are used.ZDNS)r�r�)r�r�rjrj)r�r�)r�r�)r7�	enumeraterr{r4r
rA�LOGZwarningr]�debugrkr	rCrr
r)r�r��subnets�has_default_router�r�subnetZmtu_key�subnet_typeZbootproto_inZmtu_mismatchZ
ipv4_indexZ
ipv6_indexZ	ipv6_cidrZsuff�krrr�_render_subnets�s 
























 
















 zRenderer._render_subnetsc
CsZ|dkrdS�xFt|t|j�d�D�].\}}|jd�}�x|jdg�D�]}|jd�p`t|d�}	t|�op|tk�r|jd�r�|js�|jd�r�|jr�t	d|j
��d	|d
<|ddkr�d	|d<d|kr�|	r�|d|d<d	|_n|d|d<d	|_d|k�rN|d|d<qFx6d D].\}
}|
|k�r|�|j��}||
||<�qW|jd7_qFWq"WdS)!Nr)r�r�r}rdr�rcz?Duplicate declaration of default route found for interface '%s'Tr�r�r�r�r�r�rfr�rhr ri�netmaskrgr!rerM)r�r��r�rf�r�rh�r ri�r�rg�r!re)r�r�r�r�r�)r�rr{r4r
r#r	rPrQrkr]rO)
r�r��	route_cfgr�r��_r�r�r"Zis_ipv6r��new_namer�rrr�_render_subnet_routesesF 





zRenderer._render_subnet_routesc	Cs�g}xh|jD]^\}}||jdd�g}xD|D]<}||kr*||}t|ttf�rVdj|�}|j||�Pq*WqW|r�|dkr�dj|�|d<ndj|�|d<dS)Nr��-rrZBONDING_MODULE_OPTSZBONDING_OPTS)�
bond_tpl_optsrlr@�tupler�r�append)	r�r�r�r�Z	bond_optsZbond_keyZ	value_tplZ	bond_keysZ
bond_valuerrr�_render_bonding_opts�s


zRenderer._render_bonding_optsc
Csbtj}xV|j|�D]H}|d}|jdg�}||}|j}	|j|||j|�|j||	||�qWdS)Nr]r�)rZfilter_by_physical�iter_interfacesr4r}r�r�r�)
r��
network_state�iface_contentsr�Zphysical_filterr�r��
iface_subnetsr�r�rrr�_render_physical_interfaces�sz$Renderer._render_physical_interfacescsttjd�}tjd�}�xX|j|�D�]H}|d�|�}|j|||�|g}|j|j�x"|D]}	d|	d<|dkr^d|	_q^W|jd�r�|dkr�|jd�|d<n|jd�|d	<|jd
g�}
|j	}|j
||
|j|�|j|||
|�t
�fdd�|j|�D��}xnt|�D]b\}
}|dk�r"d
|
}nd|
}|||<||}|dk�rVd|d<d|d<n�|d<d|d<�qWq"WdS)Nrtzbond-masterr]TZBONDING_MASTERrr�r��MACADDRr�cs g|]}|d�kr|d�qS)zbond-masterr]r)�.0Zslave_iface)r�rr�
<listcomp>�sz4Renderer._render_bond_interfaces.<locals>.<listcomp>zBONDING_SLAVE_%szBONDING_SLAVE%sr�r�Zhotplugr�ZMASTERZSLAVE)r�filter_by_typeZfilter_by_attrr�r��extendr{rr4r}r�r�r�r>r�)r�r�r�r�Zbond_filterZslave_filterr�r�Zmaster_cfgsZ
master_cfgr�r�Zbond_slavesrnZ
bond_slaveZslavestrZ	slave_cfgr)r�r�_render_bond_interfaces�sP









z Renderer._render_bond_interfacesc
Cs�tjd�}x�|j|�D]�}|d}||}|dkr`|jd�}|rH||d<|d|jd��|d<nJd|d	<d|_|d
}	t|	|d�}
||
kr�tjd||	dj	|
��|	|d
<|jdg�}|j
}|j|||j|�|j
||||�qWdS)Nrwr]r�vlan_idZVLAN_ID�.ZETHERDEVICETZVLANzvlan-raw-devicezIName '%s' for vlan '%s' is not officially supportedby RHEL. Supported: %srZPHYSDEVr�)rr�r�r4�rfindr�_supported_vlan_namesr�r�rr}r�r�r�)
r�r�r�r�Zvlan_filterr�r�r�r��rdevZ	supportedr�r�rrr�_render_vlan_interfacess:

z Renderer._render_vlan_interfacescCs�tt|j�t|j�g�sdStjd�}|rFtjj|�rFtjt	j
|��}x|jD]}|j|�qNWx|jD]}|j|�qhWt
d�}t|�}|j|�s�|d|}|S)Nr�;r)�anyrr�Zdns_searchdomainsrZ
ResolvConf�osr��isfilerZ	load_fileZadd_nameserverZadd_search_domainrrCr')r��existing_dns_path�contentZ
nameserverZsearchdomain�headerZcontent_strrrr�_render_dns9s 

zRenderer._render_dnscCsPtjd�}|jr|jddd�t|�dkr.dSdjt�ddj|j��dg�}|S)Nr�mainZdnsr�rr)rZNetworkManagerConfr�Zset_section_keypairrrrr=)r�r|r�outrrr�_render_networkmanager_confPs
z$Renderer._render_networkmanager_confcCs�dd�|j|j�D�}tjd�}�xl|j|�D�]\}|d}||}|dkrTd|_x(|j�D]\}	}
|	|kr^||	||
<q^W|dkr�d|kr�|jd�r�d|d<nd|d<|jd	�r�d
}|dkr�d}|jd	�||<|dkr�|jdg�r�d
dj|jd��|d<xZ|jdg�D]J}||}
|
g}|j|
j	�x(|D] }|}|dk�rFd}||d<�q0W�qW|jdg�}|j
}|j|||j|�|j
||||�q0WdS)NcSs i|]\}}|jd�r||�qS)ru)r')r�Zold_kZnew_krrr�
<dictcomp>asz6Renderer._render_bridge_interfaces.<locals>.<dictcomp>rur]rr�ZonZoffr�r�Z	LLADDRESSZbridge_portsz%srZBRIDGE_PORTSr,r�r�)r��itemsrr�r�rr4rr�r{r}r�r�r�)r�r�r�r�Zbridge_key_mapZ
bridge_filterr�r�r�r�r�r1Zbridged_iface_nameZbridged_cfgZbridged_cfgsZ
bridge_cfgZbridge_valuer�r�rrr�_render_bridge_interfaces_sV





z"Renderer._render_bridge_interfacesc
Csltjd�}x\|j|�D]N}|d}||}d|_|jdg�}|j}	|j|||j|�|j||	||�qWdS)Nrvr]r�)	rr�r�rr4r}r�r�r�)
r�r�r�r�Z	ib_filterr�r�r�r�r�rrr�_render_ib_interfaces�s
zRenderer._render_ib_interfacescCs^|s
|j}i}xd|j�D]X}|ddkr*q|d}t|||�}|dkrZ|jd�|jd�|j|||�|||<qW|j|||�|j|||�|j|||�|j|||�|j	|||�i}	x�|j
�D]�\}}|s�|j�r|j�|	|j
<x |jD]}|r�|j�|	|j
<q�W|jr�xBt|jj|jjgddg�D]$\}
}|
|	k�r.|jj|�|	|
<�q.Wq�W|	S)	z3Given state, return /etc/sysconfig files + contentsr�Zloopbackr]rrzr�rcrd)r|r�rqr7r�r�r�rrrr
r{rFr�r}�zipr^r_)r�rVr�r�r|r�r�r�r��contentsZcpathrmrrr�_render_sysconfig�s@


zRenderer._render_sysconfig)r�r|�returncCsT|s
|j}d}tj||j�}x2|j|||j|d�j�D]\}}tj|||�q6W|j	r�tj||j	�}|j
||d�}	|	r�tj||	|�|jr�tj||j�}
|j||�}|r�tj|
||�|j
r�|j|�}tj||j
�}
tj|
||�tj||jd��}|jd��rPtjtjj|��t�dg}|j�r8|jd�|jd�tj|d	j|�d	|�dS)
Ni�)r|)rr�r!zNETWORKING=yeszNETWORKING_IPV6=yeszIPV6_AUTOCONF=nor)r|r�target_pathr�rr�r
rZ
write_filer�rr�rr�Z_render_persistent_netr4r(Z
ensure_dirrr��dirnamerZuse_ipv6r�r)r/r�r|�targetZ	file_moderVr��datar�Zresolv_contentr�Znm_conf_contentZnetrules_contentr�Zsysconfig_pathZnetcfgrrr�render_network_state�sB





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�)N)N)N)N)NN)rHrIrJrKr�r�r�r�r|�dictr0�classmethodr�r�r�r�r�r�r�staticmethodrrrrrrrrrrrrr�3sl
	
I>?'=)
r�cs��fdd�dD�S)ziReturn list of supported names for vlan devices per RHEL doc
    11.5. Naming Scheme for VLAN Interfaces.csg|]}|j�t��d��qS))r��vid)�format�int)r��v)r�rrrr�sz)_supported_vlan_names.<locals>.<listcomp>�{rdev}{vid:04}�{rdev}{vid}�{rdev}.{vid:04}�{rdev}.{vid})r r!r"r#r)r�rr)r�rrr�s
r�cCsxtj�dtkrdSddg}ddg}x |D]}tj|||d�s*dSq*Wdd	g}x$|D]}tjjtj||��rTd
SqTWdS)NZvariantFZifupZifdownz/sbinz	/usr/sbin)r&rz/etc/sysconfig/network-scripts/network-functionszetc/sysconfig/configT)	rZsystem_info�
KNOWN_DISTROSrZwhichrr�rr)rZexpectedr&�pZexpected_pathsrrr�	availables

r&)r)N)$rZr;rr%ZtypingrrZ	cloudinitrZloggingrrZcloudinit.distros.parsersrrZ
cloudinit.netr	r
rrr
Zcloudinit.net.network_staterZ	getLoggerrHr�r$rr#r*r+rLrqr�r�r&rrrr�<module>sL


6nJY

Zerion Mini Shell 1.0