File: //usr/share/netplan/netplan_cli/__pycache__/configmanager.cpython-310.pyc
o
ϐxe� � @ sd d Z ddlZddlZddlZddlZddlZddlZddlmZ G dd� de �Z
G dd� de�ZdS )znetplan configuration manager� N)�Optionalc @ s� e Zd Zdi fdd�Zdd� Zedd� �Zedd � �Zddd�Zd
d� Z ddd�Z
dd� Zdd� Zdd� Z
dd� Zddd�Zd
S ) �
ConfigManager�/c C sP || _ tjdd�| _tj�| jd�| _tj�| jd�| _|| _ t
� | _d | _d S )N�netplan_)�prefix�etc�run)
r �tempfile�mkdtemp�tempdir�os�path�join�temp_etc�temp_run�extra_files�set�new_interfaces�np_state)�selfr r � r �//usr/share/netplan/netplan_cli/configmanager.py�__init__ s
zConfigManager.__init__c C s | j d us J d��t| j |�S �Nz.Must call parse() before accessing the config.)r �getattr)r �attrr r r �__getattr__( s zConfigManager.__getattr__c C sD | j d us J d��i }|�| j j� |�| j j� |�| j j� |S r )r �update� ethernets�modems�wifis�r �
interfacesr r r �physical_interfaces, s z!ConfigManager.physical_interfacesc C s| | j d us J d��i }|�| j j� |�| j j� |�| j j� |�| j j� |�| j j� |�| j j� |�| j j� |S r ) r r �bridges�bonds�
dummy_devices�tunnels�virtual_ethernets�vlans�vrfsr! r r r �virtual_interfaces5 s z ConfigManager.virtual_interfacesNc
C s� t �� }z |j| jd� |r|D ]}|�|� qt �� | _| j�|� W n t jy7 } zt t
|���d}~ww t�� �}| jj
|d� t�d�|�� �� W d � | jS 1 sZw Y | jS )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 libnetplan State wrapper
)�rootdirN)�output_filezMerged config:
{})�netplan�Parser�load_yaml_hierarchyr � load_yaml�Stater �import_parser_results�NetplanException�ConfigurationError�strr �
TemporaryFile�
_dump_yaml�logging�debug�format�read)r �extra_config�parser�f�e�tmpr r r �parseC s&