%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__/networkd.cpython-36.pyc

3

�Ad�2�@s�ddlmZddlmZddlmZddlmZmZddl	m
Z
ddlmZej
e�ZGdd�d�ZGd	d
�d
e
j�Zddd
�Zed�dd�ZdS)�)�OrderedDict)�Optional)�log)�subp�util)�renderer)�NetworkStatec@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	CfgParserc	Cstggggggid��|_dS)N)�Match�Link�Network�DHCPv4�DHCPv6�Address�Route)r�	conf_dict)�self�r�8/usr/lib/python3/dist-packages/cloudinit/net/networkd.py�__init__szCfgParser.__init__cCsdx^|jj�D]P}||kr|j|j|dt|��ttj|j|��|j|<|j|j�qWdS)N�=)r�keys�append�str�list�dict�fromkeys�sort)r�sec�key�val�krrr�update_section#s
zCfgParser.update_sectioncCs�x�|jj�D]|}||kr||j|kr4g|j||<|j||j|dt|��ttj|j||��|j||<|j||j�qWdS)z�
        For each route section we use rid as a key, this allows us to isolate
        this route from others on subsequent calls.
        rN)rrrrrrrr)rr�ridrr r!rrr�update_route_section+s  zCfgParser.update_route_sectioncCs�d}x�t|jj��D]�\}}|s"q|dkrbx�t|�D](}|d|d7}||d7}|d7}q4Wq|dkr�x�t|�D]>}|d|d7}x(t||�D]}||d7}|d7}q�WqtWq|d|d7}xt|�D]}||d7}q�W|d7}qW|S)N�r�[z]
�
r)�sortedr�items)r�contentsr!�v�e�nrrr�get_final_conf;s(zCfgParser.get_final_confcCs6|stjd�dS|j�}tjd|�tj||�dS)NzTarget file not givenzFinal content: %s)�LOG�warningr.�debugr�
write_file)rZ	target_fnr*rrr�	dump_dataSs
zCfgParser.dump_dataN)�__name__�
__module__�__qualname__rr"r$r.r3rrrrr	s

r	c@s�eZdZdZddd�Zed�dd�Zed�dd	�Zed�d
d�Zed�dd
�Z	ed�dd�Z
eed�dd�Zed�dd�Z
dd�Zdeeedd�dd�Zeed�dd�ZdS)�Rendererz�
    Renders network information in /etc/systemd/network

    This Renderer is currently experimental and doesn't support all the
    use cases supported by the other renderers yet.
    NcCs(|si}|jdd�|_|jdd�|_dS)N�resolve_conf_fnz/etc/systemd/resolved.conf�network_conf_dirz/etc/systemd/network/)�getr8r9)r�configrrrres
zRenderer.__init__)�cfgcCsXd}dddd�}|sdSx6|j�D]*\}}||kr"||r"|j||||�q"W|dS)Nr
�NameZDriverZ
MACAddress)�nameZdriverZmac_addressr>)r)r")r�ifacer<rZ
match_dictr!r+rrr�generate_match_sectionoszRenderer.generate_match_sectioncCs2d}|sdSd|kr.|dr.|j|d|d�dS)NrZmtuZMTUBytes)r")rr?r<rrrr�generate_link_section�s
zRenderer.generate_link_sectionc	Cstd}dddd�}d}d|kr,dt|d�}xB|j�D]6\}}||krHq6|d	krX||7}|j|||||�q6Wd
S)zy
        Parse a route and use rid as a key in order to isolate the route from
        others in the route dict.
        r�GatewayZDestinationZMetric)�gateway�networkZmetricr%�prefix�/rDN)rr)r$)	rr#�confr<rZ
route_cfg_maprEr!r+rrr�parse_routes�szRenderer.parse_routescCs�d}d}d}�xj|jdg�D�]X}|d}|dks:|dkrV|dkrHd}qx|d	krxd
}n"|dkrx|dkrld	}n|dkrxd
}d|kr�|dr�x,|dD] }|jd
|��||�|d}q�Wd|krddddd�}	x�|j�D]�\}
}|
dk�rd|k�r|dt|d�7}|jd|	|
|�q�|
dk�rH|jdd|��|	|
|�|d}q�|
dk�sZ|
dkr�|j||	|
dj|��q�WqW|j|d|�|d!k�r�t|jdd�t��r�|j|d |d�|S)"N�norrZsubnets�typeZdhcp4�dhcpZipv4�ipv6�yesZdhcp6Zroutes�r��addressrrB�DNS�Domains)rPrC�dns_nameservers�
dns_searchrErFrCr�arSrT� ZDHCPz	accept-rar%ZIPv6AcceptRA)rLrM)	r:rHr)rr"r$�join�
isinstance�bool)rr?r<rKrr#r,�t�iZsubnet_cfg_mapr!r+rrr�
parse_subnets�sP



 zRenderer.parse_subnetsc
Cs�x�d
D]�}||krqt||�j�}ytj|�}|r8dnd}Wn,tk
rj|dkrftjd|�d}YnX|dkrzd}nd}|j|d	|�qWdS)N�dhcp4domain�dhcp6domainrMrI�routezInvalid dhcp4domain value - %sr
r�
UseDomains)r]r^)r�casefoldrZtranslate_bool�
ValueErrorr/r0r")r�dr<�itemZretZsectionrrr�dhcp_domain�s


zRenderer.dhcp_domain)r<�nsc	Cs�d}dddd�}|jd�}|r:|jdkr:|j|jd�}n|rN|jdkrNdSx<|j�D]0\}}||krX||rX|j||d	j||��qXWdS)
NrrRrQ)�search�nameserversZ	addresses�dnsrO)rgrh�rV)r:�versionZdns_searchdomainsrSr)r"rW)	rr?r<rfrZdns_cfg_maprir!r+rrr�	parse_dns�s
zRenderer.parse_dnsc	Cs�ddddd�}|dkr,|jddd	d
dd��d
|�d�|kr�|dd|��gkr�|d
|�d�}x4|j�D](\}}||krh|jd|��|||�qhWdS)Nzuse-dnszuse-domainszuse-hostnamezuse-ntp)ZUseDNSr`ZUseHostnameZUseNTP�4z
send-hostnameZhostnamezroute-metriczuse-mtuz
use-routes)ZSendHostnameZHostnameZRouteMetricZUseMTUZ	UseRoutesrKz
-overridesrMZipvZDHCPv)�updater)r")	rr<�devicerKrkZdhcp_config_mapsZdhcp_overridesr!r+rrr�parse_dhcp_overrides�s$
zRenderer.parse_dhcp_overridescCs>d}tjd|�|d|d}tj||�tj|||�dS)Nzsystemd-networkz Setting Networking Config for %sz10-cloud-init-z.network)r/r1rr2Zchownbyname)r�linkrGZnwk_dirZnet_fn_ownerZnet_fnrrr�create_network_files
zRenderer.create_network_file)�
network_state�	templates�returncCsT|j}|rtj|�|}tj|�|j|�}x"|j�D]\}}|j|||�q6WdS)N)r9rZtarget_pathrZ
ensure_dir�_render_contentr)rr)rrsrt�targetZnetwork_dir�ret_dictr!r+rrr�render_network_state$s

zRenderer.render_network_state)rfrucCszi}�xn|j�D�]`}t�}|j||�}|j||�|j||�}|j|||�d}x,|j�D] }|jd|��||�|d}q\W|jdk�r`|d}	x6|j	dj
�D]$\}
}d|kr�|jd�|	kr�|
}	Pq�W|	|j	dk�r`|j	d|	}|j||�xhdD]`}
d
|
�d�|k�rJd|jd
|
�d
�i�k�rJ|	�d|
�d|
�d�}t
|��|j||||
��q�W|j||j�i�qW|S)Nr�crOrjr>Z	ethernetszset-namerm�6rKZdomainzuse-domainsz
-overridesz has both dhcpzdomain and dhcpz*-overrides.use-domains configured. Use one)rmr{)Ziter_interfacesr	r@rAr\rlZiter_routesrHrkr;r)r:re�	Exceptionrprnr.)rrfrxr?r<rqrKr#r_r>Zdev_nameZdev_cfgrorkZ	exceptionrrrrv4s<

zRenderer._render_content)N)NN)r4r5r6�__doc__rr	r@rArHr\rerrlrprrrrryrvrrrrr7]s

	6
r7NcCs6ddg}ddg}x |D]}tj|||d�sdSqWdS)NZipZ	systemctlz	/usr/sbinz/bin)rgrwFT)rZwhich)rwZexpectedrg�prrr�	availableos
r)rfcCsti�}|j|�S)N)r7rv)rfrrrr�network_state_to_networkdxsr�)N)�collectionsrZtypingrZ	cloudinitrZloggingrrZ
cloudinit.netrZcloudinit.net.network_staterZ	getLoggerr4r/r	r7rr�rrrr�<module>
s
H
	

Zerion Mini Shell 1.0