HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/usr/share/netplan/netplan/__pycache__/configmanager.cpython-38.pyc
U

��~f1�@s`dZddlZddlZddlZddlZddlZddlZddlZGdd�de�Z	Gdd�de
�ZdS)znetplan configuration manager�Nc@sReZdZdifdd�Zedd��Zedd��Zedd	��Zed
d��Zedd
��Z	edd��Z
edd��Zedd��Zedd��Z
edd��Zedd��Zedd��Zedd��Zedd��Zed d!��Zed"d#��Zed$d%��Zed&d'��Zgfd(d)�Zd*d+�ZdAd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�ZdBd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@S)C�
ConfigManager�/cCsP||_tjdd�|_tj�|jd�|_tj�|jd�|_||_	i|_
t�|_dS)NZnetplan_)�prefix�etc�run)
r�tempfileZmkdtemp�tempdir�os�path�join�temp_etc�temp_run�extra_files�config�set�new_interfaces)�selfrr�r�+/usr/share/netplan/netplan/configmanager.py�__init__szConfigManager.__init__cCs
|jdS)N�network)r�rrrrr(szConfigManager.networkcCshi}|�|j�|�|j�|�|j�|�|j�|�|j�|�|j�|�|j�|�|j�|S�N)	�update�	ovs_ports�	ethernets�modems�wifis�bridges�bonds�tunnels�vlans�r�
interfacesrrrr#,szConfigManager.interfacescCs,i}|�|j�|�|j�|�|j�|Sr)rrrrr"rrr�physical_interfaces9s
z!ConfigManager.physical_interfacescCs8i}|�|j�|�|j�|�|j�|�|j�|Sr)rrrr r!r"rrr�virtual_interfacesAsz ConfigManager.virtual_interfacescCs
|jdS)Nr�rrrrrrKszConfigManager.ovs_portscCs
|jdS)N�openvswitchr&rrrrr'OszConfigManager.openvswitchcCs
|jdS)Nrr&rrrrrSszConfigManager.ethernetscCs
|jdS)Nrr&rrrrrWszConfigManager.modemscCs
|jdS)Nrr&rrrrr[szConfigManager.wifiscCs
|jdS)Nrr&rrrrr_szConfigManager.bridgescCs
|jdS)Nrr&rrrrrcszConfigManager.bondscCs
|jdS)Nr r&rrrrr gszConfigManager.tunnelscCs
|jdS)Nr!r&rrrrr!kszConfigManager.vlanscCs
|jdS)N�
nm-devicesr&rrrr�
nm_devicesoszConfigManager.nm_devicescCs
|jdS)N�versionr&rrrrr*sszConfigManager.versioncCs
|jdS)N�rendererr&rrrrr+wszConfigManager.renderercCs|�|j�Sr)�
strip_treerrrrr�tree{szConfigManager.treecCsDi}|��D]2\}}t|t�r(t�|�}|ddifkr|||<q|S)zclear empty branches�N)�items�
isinstance�dictrr,)�dataZnew_data�k�vrrrr,s


zConfigManager.strip_treec
s�i�dD]4}t�tj�|j|dd��D]}|�tj�|�<q&q�fdd�t����D�}iiiiiiiiiiddd�|jd<|D]}|�	|�q�|D]}|j
|�	|�O_
q�t�d	�
tj|jd
d���dS)z�
        Parse all our config files to return an object that describes the system's
        entire configuration, so that it can later be interrogated.

        Returns a dict that contains the entire, collated and merged YAML.
        )�librr�netplanz*.yamlcsg|]}�|�qSrr)�.0�name�Znames_to_pathsrr�
<listcomp>�sz'ConfigManager.parse.<locals>.<listcomp>N)rr'rrrrrr r!r(r*r+rzMerged config:
{}F)Zdefault_flow_style)�globr	r
rr�basename�sorted�keysr�_merge_yaml_configr�logging�debug�format�yaml�dumpr-)rZextra_configZyaml_dir�	yaml_file�filesrr9r�parse�s.�zConfigManager.parsecCs*|D]}|�|||�q|j�|�dSr)�
_copy_filerr)rZconfig_dictZconfig_filerrr�add�szConfigManager.addTcCs�|r(|�tj�|jd�tj�|jd��|jtj�|jd�tj�|jdd�dd�|jtj�|jd�tj�|jd	d
�dd�dS)Nzetc/netplanr6�%run/NetworkManager/system-connectionsZNetworkManagerzsystem-connectionsT)�
missing_ok�run/systemd/networkZsystemdr)�
_copy_treer	r
rrrr
)rZbackup_config_dirrrr�backup�s���zConfigManager.backupc
Csz�t|j�D]}t�|j|�|j|=qd�|j�}d�|j�}tj�|�r|t�	tj�
|jd��|�|tj�
|jd��tj�|�r�t�	tj�
|jd��|�|tj�
|jd��WnFt
k
r�}z(t�d�|��t�d�t�d�W5d}~XYnXdS)Nz${}/NetworkManager/system-connectionsz{}/systemd/networkrJrLz8Something really bad happened while reverting config: {}zZYou should verify the netplan YAML in /etc/netplan and probably run 'netplan apply' again.���)r1rr	�unlinkrBr
r
�exists�shutil�rmtreerrrM�	Exceptionr@�error�sys�exit)rZ
extra_fileZtemp_nm_pathZtemp_networkd_path�errr�revert�s(
��
zConfigManager.revertcCst�|j�dSr)rRrSrrrrr�cleanup�szConfigManager.cleanupcCs&z|��Wntk
r YnXdSr)rZ�FileNotFoundErrorrrrr�__del__�szConfigManager.__del__cCst�||�dSr)rR�copy)r�src�dstrrrrH�szConfigManager._copy_fileFcCs2zt�||�Wntk
r,|r&n�YnXdSr)rR�copytreer[)rr^r_rKrrrrM�szConfigManager._copy_treec
Cs�t�}t�}d|krD|�d�D]$\}}|id�||<|id�||<qt|���}|D]\}|�|�}	||kr�t�d�||��||�	|	�qTt�d�||��|	||<|�
|�qT|S)N�ports)Zpeerr'�{} exists in {}�{} not found in {})rr1�get�listr>�popr@rArBrrI)
r�orig�newrraZp1Zp2�changed_ifaces�ifname�ifacerrr�_merge_ovs_ports_config�s 
z%ConfigManager._merge_ovs_ports_configcCsxt�}t|���}|D]\}|�|�}||krNt�d�||��||�|�qt�d�||��|||<|�|�q|S)Nrbrc)	rrer>rfr@rArBrrI)rrgrhrrirjrkrrr�_merge_interface_config
s
z%ConfigManager._merge_interface_configc	Cst�}�z�t|����}tj|tjd�}d}|dk	r<|�d�}|�r�d|krv|�|j|�d��}||O}|�d�|jd<d|kr�|�	|j
|�d��}||O}d|kr�|�	|j|�d��}||O}d|kr�|�	|j|�d��}||O}d|k�r|�	|j
|�d��}||O}d|k�r.|�	|j|�d��}||O}d	|k�rT|�	|j|�d	��}||O}d
|k�rz|�	|j|�d
��}||O}d|k�r�|�	|j|�d��}||O}d|k�r�|�d�|jd<d
|k�r�|�d
�|jd
<W5QRX|WSttjfk
�rt�d�|��t�d�YnXdS)N)�Loaderrr'rrrrrr r!r(r*r+z!Error while loading {}, aborting.�)r�openrC�loadZCSafeLoaderrdrlrrrmrrrrrr r!r)�IOErrorZ	YAMLErrorr@rUrBrVrW)rrEr�fZ	yaml_datarrhrrrr?sX







z ConfigManager._merge_yaml_configN)T)F)#�__name__�
__module__�__qualname__r�propertyrr#r$r%rr'rrrrrr r!r)r*r+r-�staticmethodr,rGrIrNrYrZr\rHrMrlrmr?rrrrrs`	



	














,

	rc@seZdZdZdS)�ConfigurationErrorzL
    Configuration could not be parsed or has otherwise failed to apply
    N)rtrurv�__doc__rrrrryMsry)rzr;r@r	rRrVrrC�objectrrTryrrrr�<module>s2