%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/share/netplan/netplan/__pycache__/
Upload File :
Create Path :
Current File : //usr/share/netplan/netplan/__pycache__/configmanager.cpython-36.pyc

3

�Bd]G"�@s`dZddlZddlZddlZddlZddlZddlZddlZGdd�de�Z	Gdd�de
�ZdS)znetplan configuration manager�Nc@s�eZdZdifdd�Zedd��Zedd��Zedd	��Zed
d��Zedd
��Z	edd��Z
edd��Zedd��Zgfdd�Z
dd�Zd)dd�Zdd�Zdd�Zdd �Zd*d"d#�Zd$d%�Zd&d'�Zd(S)+�
ConfigManager�/cCsP||_tjdd�|_tjj|jd�|_tjj|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.networkcCsDi}|j|j�|j|j�|j|j�|j|j�|j|j�|S)N)�update�	ethernets�wifis�bridges�bonds�vlans)r�
interfacesrrrr,szConfigManager.interfacescCs i}|j|j�|j|j�|S)N)rrr)rrrrr�physical_interfaces6sz!ConfigManager.physical_interfacescCs
|jdS)Nr)r)rrrrr=szConfigManager.ethernetscCs
|jdS)Nr)r)rrrrrAszConfigManager.wifiscCs
|jdS)Nr)r)rrrrrEszConfigManager.bridgescCs
|jdS)Nr)r)rrrrrIszConfigManager.bondscCs
|jdS)Nr)r)rrrrrMszConfigManager.vlanscs�i�x@dD]8}x2tjtjj|j|dd��D]}|�tjj|�<q*Wq
W�fdd�t�j��D�}iiiiid�|jd	<x|D]}|j	|�q|Wx |D]}|j
|j	|�O_
q�Wtjd
j
tj|jdd���d
S)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)�names_to_pathsrr�
<listcomp>esz'ConfigManager.parse.<locals>.<listcomp>)rrrrrrzMerged config:
{}F)Zdefault_flow_styleN)rrr)�globr	r
rr�basename�sorted�keysr�_merge_yaml_configr�logging�debug�format�yaml�dump)rZextra_configZyaml_dir�	yaml_file�filesr)r#r�parseQs
 

zConfigManager.parsecCs.x|D]}|j|||�qW|jj|�dS)N)�
_copy_filerr)rZconfig_dictZconfig_filerrr�addvs
zConfigManager.addTcCs�|r(|jtjj|jd�tjj|jd��|jtjj|jd�tjj|jdd�dd�|jtjj|jd�tjj|jd	d
�dd�dS)Nzetc/netplanr z%run/NetworkManager/system-connectionsZNetworkManagerzsystem-connectionsT)�
missing_okzrun/systemd/networkZsystemdr)�
_copy_treer	r
rrrr
)rZbackup_config_dirrrr�backup{szConfigManager.backupcCs
y�x*t|j�D]}tj|j|�|j|=qWdj|j�}dj|j�}tjj|�r�tj	tjj
|jd��|j|tjj
|jd��tjj|�r�tj	tjj
|jd��|j|tjj
|jd��WnHt
k
�r}z*tjdj|��tjd�tjd�WYdd}~XnXdS)	Nz${}/NetworkManager/system-connectionsz{}/systemd/networkz%run/NetworkManager/system-connectionszrun/systemd/networkz8Something really bad happened while reverting config: {}zZYou should verify the netplan YAML in /etc/netplan and probably run 'netplan apply' again.����)�dictrr	�unlinkr,r
r
�exists�shutil�rmtreerrr5�	Exceptionr*�error�sys�exit)rZ
extra_fileZtemp_nm_pathZtemp_networkd_path�errr�revert�s$
zConfigManager.revertcCstj|j�dS)N)r<r=r)rrrr�cleanup�szConfigManager.cleanupcCstj||�dS)N)r<�copy)r�src�dstrrrr2�szConfigManager._copy_fileFcCs2ytj||�Wntk
r,|r&n�YnXdS)N)r<�copytree�FileNotFoundError)rrFrGr4rrrr5�szConfigManager._copy_treecCs|t�}t|j��}xd|D]\}|j|�}||krPtjdj||��||j|�qtjdj||��|||<|j|�qW|S)Nz{} exists in {}z{} not found in {})	r�listr(�popr*r+r,rr3)rZorig�newrZchanged_ifacesZifname�ifacerrr�_merge_interface_config�s

z%ConfigManager._merge_interface_configcCs8t�}y�t|���}tj|tjd�}d}|dk	r8|jd�}|r�d|kr`|j|j|jd��}||O}d|kr�|j|j|jd��}||O}d|kr�|j|j	|jd��}||O}d|kr�|j|j
|jd��}||O}d|kr�|j|j|jd��}||O}WdQRX|Sttj
fk
�r2tjdj|��tjd	�YnXdS)
N)�Loaderrrrrrrz!Error while loading {}, aborting.r7)r�openr-�loadZCSafeLoader�getrNrrrrr�IOErrorZ	YAMLErrorr*r?r,r@rA)rr/r�fZ	yaml_datarrLrrrr)�s6

z ConfigManager._merge_yaml_configN)T)F)�__name__�
__module__�__qualname__r�propertyrrrrrrrrr1r3r6rCrDr2r5rNr)rrrrrs$	
%

	rc@seZdZdZdS)�ConfigurationErrorzL
    Configuration could not be parsed or has otherwise failed to apply
    N)rUrVrW�__doc__rrrrrY�srY)rZr%r*r	r<r@rr-�objectrr>rYrrrr�<module>sB

Zerion Mini Shell 1.0