File: //usr/share/netplan/netplan/cli/__pycache__/ovs.cpython-310.pyc
o
�
ed� � @ s� d dl Z d dlZd dlZd dlZd dlmZ dZdZddd�Zddd d
�Z G dd� de
�Zd
d� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� ZdS )� N)�systemctl_is_activez/usr/bin/ovs-vsctlzovsdb-server.service�false)�mcast_snooping_enable�rstp_enable)�del-sslzget-ssl)z
del-fail-modez
get-fail-mode)zdel-controllerzget-controller)zset-sslz
set-fail-modezset-controllerc @ s e Zd ZdS )�OvsDbServerNotRunningN)�__name__�
__module__�__qualname__� r r �%/usr/share/netplan/netplan/cli/ovs.pyr * s r c C s` t �|�}|du rt�td| |||g� dS |r,||kr.t�td| |d||f g� dS dS dS )z2Cleanup values from a column (i.e. "column=value")N�remove�setz%s=%s)�DEFAULTS�get�
subprocess�
check_call�OPENVSWITCH_OVS_VSCTL)�type�iface�column�value�defaultr r r �_del_col. s
�r c
C s t �td| |||t|�g� dS )z:Cleanup values from a dictionary (i.e. "column:key=value")r
N)r r r �
_escape_colon)r r r �keyr r r r � _del_dict9 s r c C s t �dd| �S )Nz([^\\]):z\g<1>\:)�re�sub)�literalr r r r @ s r c s� t �|d�\}}|dkrd}|rBt|g}t|g}|r$|�|� |�|� tj|dd�� t� fdd�|�d�D ��r@t�|� dS dS t d |��)
z*Cleanup commands from the global namespace)NNr NT��textc 3 s � | ]}|� v V qd S )Nr )�.0�item��outr r � <genexpr>^ s � z_del_global.<locals>.<genexpr>�,zReset command unknown for:)
�GLOBALSr r �appendr �check_output�all�splitr � Exception)r r r r �del_cmd�get_cmd�args_get�args_delr r$ r �_del_globalD s
�
r2 c C s� |� dd�}|d }|dkrt|�dkrt| ||d |� nt|�dkr1t| ||d |d |� n t| ||d |� t�td| |d|g� dS )zDCheck if this setting is in a dict or a colum and delete accordingly�/� � �globalr
�external-idsN)r, �lenr2 r r r r r )r r �settingr r, �colr r r �
clear_settingd s r; c C s( t |t�sJ �|�| d �}|o|jdkS )N�OpenVSwitch)�
isinstance�dictr �backend)r �np_interface_dict�np_defr r r �is_ovs_interfacer s rB c C s� t t�std�t���| �� t� }| j�� D ]
}t|| j�r$|� |� qt
j�t
�r�dD ]Q}tjt
ddddddd |d
g dd�}|�� D ]8}d
|v r}|�d�d
}||v rWqE|d
dkrrt�t
d|g�jd
krrt�t
dd|g� qEt�t
d|d |g� qEq-dD ]a}d} |dkr�d} n|dkr�d} tjt
d| dddddd |g dd�}|�� D ]9}d|v r�d}|}
|dkr�|�dd�\}}
|
�d��d�D ]}|�d�r�d|v r�|�dd�\}}
t||||
� q�q�q�d!S |s�|r�t�d � d!S d!S )"aQ
Query OpenVSwitch state through 'ovs-vsctl' and filter for netplan=true
tagged ports/bonds and bridges. Delete interfaces which are not defined
in the current configuration.
Also filter for individual settings tagged netplan/<column>[/<key]=value
in external-ids and clear them if they have been set by netplan.
z{} is not running))�Portzdel-port)�Bridge�del-br)� InterfacerE z--columns=name,external-idsz-f�csvz-d�barez
--no-headings�listr Tr znetplan=truer'