GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
File: //usr/share/netplan/netplan/__pycache__/configmanager.cpython-38.pyc
U

ci�_
.�@s`dZddlZddlZddlZddlZddlZddlZddlZGdd�de�Z	Gdd�de
�ZdS)znetplan configuration manager�Nc@s2eZdZdifdd�Zedd��Zedd��Zedd	��Zed
d��Zedd
��Z	edd��Z
edd��Zedd��Zedd��Z
edd��Zedd��Zedd��Zedd��Zedd��Zed d!��Zed"d#��Zgfd$d%�Zd&d'�Zd;d)d*�Zd+d,�Zd-d.�Zd/d0�Zd<d2d3�Zd4d5�Zd6d7�Zd8d9�Zd:S)=�
ConfigManager�/cCsP||_tjdd�|_tj�|jd�|_tj�|jd�|_||_	i|_
t�|_dS)NZnetplan_)�prefix�etc�run)
r�tempfile�mkdtemp�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_interfacescCs
|jdS)Nr�rrrrrrAszConfigManager.ovs_portscCs
|jdS)N�openvswitchr&rrrrr'EszConfigManager.openvswitchcCs
|jdS)Nrr&rrrrrIszConfigManager.ethernetscCs
|jdS)Nrr&rrrrrMszConfigManager.modemscCs
|jdS)Nrr&rrrrrQszConfigManager.wifiscCs
|jdS)Nrr&rrrrrUszConfigManager.bridgescCs
|jdS)Nr r&rrrrr YszConfigManager.bondscCs
|jdS)Nr!r&rrrrr!]szConfigManager.tunnelscCs
|jdS)Nr"r&rrrrr"aszConfigManager.vlanscCs
|jdS)N�versionr&rrrrr(eszConfigManager.versioncCs
|jdS)N�rendererr&rrrrr)iszConfigManager.renderercCs|�|j�Sr)�
strip_treerrrrr�treemszConfigManager.treecCsDi}|��D]2\}}t|t�r(t�|�}|ddifkr|||<q|S)zclear empty branches�N)�items�
isinstance�dictrr*)�dataZnew_data�k�vrrrr*qs


zConfigManager.strip_treecs�i�dD]4}t�tj�|j|dd��D]}|�tj�|�<q&q�fdd�t����D�}iiiiiiiiiddd�|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'rrrrr r!r"r(r)rzMerged config:
{}F)Zdefault_flow_style)�globr
rrr�basename�sorted�keysr�_merge_yaml_configr�logging�debug�format�yaml�dumpr+)rZextra_configZyaml_dir�	yaml_file�filesrr7r�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/netplanr4�%run/NetworkManager/system-connectionsZNetworkManagerzsystem-connectionsT)�
missing_ok�run/systemd/networkZsystemdr)�
_copy_treer
rrrr
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/networkrHrJz8Something really bad happened while reverting config: {}zZYou should verify the netplan YAML in /etc/netplan and probably run 'netplan apply' again.���)r/rr
�unlinkr@rr�exists�shutil�rmtreerrrK�	Exceptionr>�error�sys�exit)rZ
extra_fileZtemp_nm_pathZtemp_networkd_path�errr�revert�s(
��
zConfigManager.revertcCst�|j�dSr)rPrQr	rrrr�cleanup�szConfigManager.cleanupcCst�||�dSr)rP�copy)r�src�dstrrrrF�szConfigManager._copy_fileFcCs2zt�||�Wntk
r,|r&n�YnXdSr)rP�copytree�FileNotFoundError)rrZr[rIrrrrK�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 {})rr/�get�listr<�popr>r?r@rrG)
r�orig�newrr^Zp1Zp2�changed_ifaces�ifname�ifacerrr�_merge_ovs_ports_config�s 
z%ConfigManager._merge_ovs_ports_configcCsxt�}t|���}|D]\}|�|�}||krNt�d�||��||�|�qt�d�||��|||<|�|�q|S)Nr_r`)	rrbr<rcr>r?r@rrG)rrdrerrfrgrhrrr�_merge_interface_config�s
z%ConfigManager._merge_interface_configc	Cs�t�}�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�|�d�|jd<d|k�r�|�d�|jd<W5QRX|WSttjfk
�r�t�d
�|��t�d�YnXdS)N)ZLoaderrr'rrrrr r!r"r(r)z!Error while loading {}, aborting.�)r�openrA�loadZCSafeLoaderrarirrrjrrrrr r!r"�IOErrorZ	YAMLErrorr>rSr@rTrU)rrCr�fZ	yaml_datarrerrrr=sR






z ConfigManager._merge_yaml_configN)T)F) �__name__�
__module__�__qualname__r�propertyrr$r%rr'rrrrr r!r"r(r)r+�staticmethodr*rErGrLrWrXrFrKrirjr=rrrrrsV	
















+

	rc@seZdZdZdS)�ConfigurationErrorzL
    Configuration could not be parsed or has otherwise failed to apply
    N)rprqrr�__doc__rrrrru4sru)rvr9r>r
rPrTrrA�objectrrRrurrrr�<module>s