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



"�T`Q?�@s ddlZddlZddlmZddlmZmZmZddlm	Z
ddlmZddlmZddlm
Z
dd	lmZmZd
Ze
je�Zdd�Zdd
d�Zdd�Zddd�ZGdd�dej�Zddd�Zddd�ZdS)�N�)�renderer)�subnet_is_ipv6�NET_CONFIG_TO_V2�IPV6_DYNAMIC_TYPES)�log)�util)�subp)�safeyaml)�
SYS_CLASS_NET�get_devicelists4# This is the initial network config.
# It can be overwritten by cloud-init or console-conf.
network:
    version: 2
    ethernets:
        all-en:
            match:
                name: "en*"
            dhcp4: true
        all-eth:
            match:
                name: "eth*"
            dhcp4: true
cs#t�fdd�|j�D��S)Nc3s0|]&\}}|j��r||fVqdS)N)�
startswith)�.0�key�value)�match��7/usr/lib/python3/dist-packages/cloudinit/net/netplan.py�	<genexpr>#s	z,_get_params_dict_by_match.<locals>.<genexpr>)�dict�items)�configrr)rr�_get_params_dict_by_match"srcCsddd�}|dkr!g}g}g}g}g}|jdg�}	|	dkr]g}	xV|	D]N}
|
jd�}|jd�r�|dkr�|d7}|j|d	i�qd|tkr�|jd
d	i�qd|d&krdd
|
jd�}d|
kr|d|
jd�7}d|
krw|
jd�rw|
jd�}
d|
krd|jd|
i�n|jd|
i�d|
kr�|||
jdg��7}d|
kr�|||
jdg��7}d|
krd}t|
�r�d|kr�d}|j||
jd�i�x�|
jdg�D]{}d|jd�|jd�f}d|jd�d|i}d|kr�|jd|jdd�i�|j|�q&W|j|�qdWd|kr|jd�}|r|d|krtjd ||d|�n|d|d<t|�d!kr7|jd"|i�t|�d!kr\|jd|i�t|�d!kr�d"|i}|jd#|i�t|�d!kr�|jd#i�}|jd$|i�|jd#|i�d%|kr|d%dk	r|jd%t	j
|jd%��i�dS)'a�This method parse a cloudinit.net.network_state dictionary (config) and
       maps netstate keys/values into a dictionary (entry) to represent
       netplan yaml.

    An example config dictionary might look like:

    {'mac_address': '52:54:00:12:34:00',
     'name': 'interface0',
     'subnets': [
        {'address': '192.168.1.2/24',
         'mtu': 1501,
         'type': 'static'},
        {'address': '2001:4800:78ff:1b:be76:4eff:fe06:1000",
         'mtu': 1480,
         'netmask': 64,
         'type': 'static'}],
      'type: physical',
      'accept-ra': 'true'
    }

    An entry dictionary looks like:

    {'set-name': 'interface0',
     'match': {'macaddress': '52:54:00:12:34:00'},
     'mtu': 1501}

    After modification returns

    {'set-name': 'interface0',
     'match': {'macaddress': '52:54:00:12:34:00'},
     'mtu': 1501,
     'address': ['192.168.1.2/24', '2001:4800:78ff:1b:be76:4eff:fe06:1000"],
     'ipv6-mtu': 1480}

    � cSsD|st|�tgkr |S||kr9|j|�S|gSdS)zBHelper to convert strings to list of strings, handle single stringN)�type�str�split)�obj�tokenrrr�_listifyLs

z$_extract_addresses.<locals>._listifyN�subnetsrZdhcp�4TZdhcp6�static�static6z%sZaddress�prefixz/%d�gateway�:Zgateway6Zgateway4�dns_nameserversZ
dns_searchZmtuzipv6-mtu�routesz%s/%s�networkZviaZtoZmetric�dzZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.r�	addresses�nameservers�searchz	accept-ra)r"r#)�getr
�updaterr�append�LOGZwarning�lenrZis_true)r�entry�ifname�featuresrr+r(r,�
searchdomainsr ZsubnetZsn_typeZaddrr%ZmtukeyZrouteZto_netZ	new_routeZ	entry_mtu�nsrrr�_extract_addresses's�%	

r8csNt�fdd�|j�D��}t|�dkrJ|jd|i�dS)Ncs4g|]*\}}|jdd��kr|�qS)zbond-masterN)r.)r�name�cfg)�bond_masterrr�
<listcomp>�s		z0_extract_bond_slaves_by_name.<locals>.<listcomp>r�
interfaces)�sortedrr2r/)r=r3r;Zbond_slave_namesr)r;r�_extract_bond_slaves_by_name�s%r?cs�tj�d�}tjj|�s(dStj|dd�}|tkrMdS�fdd�dD�}d	d�|D�}tj	d
||�x"|g|D]}tj
|�q�WdS)Nz etc/netplan/00-snapd-config.yaml�decodeFcs"g|]}tj�|��qSr)r	�target_path)r�f)�targetrrr<�s	z"_clean_default.<locals>.<listcomp>�-run/systemd/network/10-netplan-all-en.network�.run/systemd/network/10-netplan-all-eth.network�#run/systemd/generator/netplan.stampcSs(g|]}tjj|�r|�qSr)�os�path�isfile)rrBrrrr<�s	z9removing known config '%s' and derived existing files: %s)rDrErF)r	rArGrHrIrZ	load_file�KNOWN_SNAPD_CONFIGr1�debug�unlink)rCZtpath�contentZderivedZexistingrBr)rCr�_clean_default�s
	
rNc@s�eZdZdZddgZddgZddd�Zedd	��Zddd
d�Z	dd
d�Z
ddd�Zdd�ZdS)�RendererzBRenders network information in a /etc/netplan/network.yaml format.�netplanZgenerate�infoNcCsy|si}|jdd�|_|jdd�|_|jdd�|_|jdd�|_|jdd�|_dS)	N�netplan_pathzetc/netplan/50-cloud-init.yaml�netplan_headerZpostcmdsF�
clean_defaultTr5)r.rRrS�	_postcmdsrT�	_features)�selfrrrr�__init__�s	zRenderer.__init__cCs�|jdkr�yBtj|jdd�\}}tj|�}|dd|_WnOtjk
rhYn;ttfk
r�}ztj	d|�WYdd}~XnX|jS)N�captureTz
netplan.ior5z-Failed to list features from netplan info: %s)
rVr	�NETPLAN_INFOrZ	load_yamlZProcessExecutionError�	TypeError�KeyErrorr1rK)rWZ	info_blobZ_errrQ�errrr5�s#zRenderer.featurescCs�tjjtj|�|j�}tjtjj|��|j	rL|j	nd}|j
|�}|jd�sz|d7}tj|||�|j
r�td|�|jd|j�|jd|j�dS)N��
rC�run)rGrH�joinr	rArRrZ
ensure_dir�dirnamerS�_render_content�endswithZ
write_filerTrN�_netplan_generaterU�_net_setup_link)rW�
network_stateZ	templatesrCZfpnplan�headerrMrrr�render_network_state�s!
	
zRenderer.render_network_stateFcCs1|stjd�dStj|jdd�dS)Nz!netplan generate postcmd disabledrYT)r1rKr	�NETPLAN_GENERATE)rWr`rrrre�s
zRenderer._netplan_generatecsd|stjd�dSdddg�x7�fdd�t�D�D]}tj|dd	�qCWdS)
z�To ensure device link properties are applied, we poke
           udev to re-evaluate networkd .link files and call
           the setup_link udev builtin command
        z'netplan net_setup_link postcmd disabledNZudevadmztest-builtinZnet_setup_linkcs7g|]-}tjjt|�r�t|g�qSr)rGrH�islinkr)rZiface)�	setup_lnkrrr<�s	z,Renderer._net_setup_link.<locals>.<listcomp>rYT)r1rKrr	)rWr`�cmdr)rlrrf�s
zRenderer._net_setup_linkc*Cs�|jdkr>tjd�tjd|jidddd�Si}i}i}i}i}g}|jjdg�}|j}	|j	}
xM|j
�D]?}|jd�}td	d
�|j�D��}
|
jd�}|dkr�d
|d|
jdd�i}|ddkrX|
jdd�}|dk	rJd|j
�i|d<n|d=|d
=t|
|||j�|j||i�q�|dkr�i}i}tjd�}x}ddgD]o}t|
|�}xW|j�D]I\}}|j|jdd��}|dkrq�|j||i�q�Wq�Wt|�dkrP|jd|i�|
jd�rx|
jd�j
�|d<|
jd�}|dkr�t|||�t|
|||j�|j||i�q�|dkrNttj|
jd���}d|i}d}t|
|�}i}tjd�}x�|j�D]�\}}|j|�}|dkrfq<|j||i�|d0kr<i} x0|D](}!|!j�\}"}#t|#�| |"<q�W|j|| i�q<Wt|�dkr�|jd|i�|
jd�r"|
jd�j
�|d<t|
|||j�|j||i�q�|dkr�d |
jd!�d"|
jd#�i}$|
jdd�}|dk	r�|j
�|$d<t|
|$||j�|j||$i�q�W|	s�|
rbd$|	d%|
i}%xh|||||gD]Q}&xH|&j�D]:\}'}(d&|(ks d$|(krGq |(jd&|%i�q Wq
Wd'd(�})|jd)�||)d*|�7}||)d+|�7}||)d,|�7}||)d-|�7}||)d.|�7}d/j|�S)1N�zV2 to V2 passthroughr)�explicit_startF�explicit_endr=r9css-|]#\}}|dk	r||fVqdS)Nr)rrrrrrrs	z+Renderer._render_content.<locals>.<genexpr>rZphysicalzset-namerZmac_addressZ
macaddress�bondZbond_zbond-�_�-rZ
parameterszbond-slavesZnone�bridgeZbridge_portsZbridge_�	path-cost�
port-priority�vlan�idZvlan_id�linkzvlan-raw-devicer+r-r,cSsJ|rFtj||idddddd�}tj|d�}|gSgS)	NroFrpZnoaliasTr�z    )r
�dumpsr�indent)r9�section�dumpZtxtrrr�_render_section�s	z1Renderer._render_content.<locals>._render_sectionznetwork:
    version: 2
�	ethernets�wifis�bonds�bridges�vlansr^)rurv)�versionr1rKr
r{rZ_network_stater.r'Zdns_searchdomainsZiter_interfacesrr�lowerr8r5r/rr�replacer2r?r>�copyr�intr0ra)*rWrgr�r�r�r�r�rMr=r,r6rr4ZifcfgZif_typeZethZmacaddrrqZbond_configZv2_bond_maprZbond_paramsZparamrZnewnameZslave_interfacesZportsrtZmatch_prefixZparamsZ	br_configZ
v2_bridge_mapZnewvalue�valZportZportvalrwZnscfgr}�_namer:rrrrrcs�
		


zRenderer._render_content)
�__name__�
__module__�__qualname__�__doc__rjrZrX�propertyr5rirerfrcrrrrrO�s
rOcCsIdg}ddg}x-|D]%}tj|d|d|�sdSqWdS)NrPz	/usr/sbinz/sbinr-rCFT)r	Zwhich)rCZexpectedr-�prrr�	available�s	
r�cCsZd}td|d|i�}|s*d}|jd�sC|d7}|j|�}||S)Nzetc/network/50-cloud-init.yamlrRrSr^r_)rOrdrc)rgrhrRr�contentsrrr�network_state_to_netplan�s
r�)r�rGr^rrgrrrZ	cloudinitrZloggingrr	r
Z
cloudinit.netrrrJZ	getLoggerr�r1rr8r?rNrOr�r�rrrr�<module>s"w�	

Zerion Mini Shell 1.0