HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //usr/share/netplan/netplan/cli/__pycache__/ovs.cpython-310.pyc
o

|hEc��@svddlZddlZddlZddlZdZddd�Zdddd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�Nz/usr/bin/ovs-vsctl�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	Cs`t�|�}|durt�td||||g�dS|r,||kr.t�td||d||fg�dSdSdS)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�default�r�%/usr/share/netplan/netplan/cli/ovs.py�_del_col's
 �rc
Cs t�td||||t|�g�dS)z:Cleanup values from a dictionary (i.e. "column:key=value")rN)r
rr�
_escape_colon)r
rr�keyrrrr�	_del_dict2s rcCst�dd|�S)Nz([^\\]):z\g<1>\:)�re�sub)�literalrrrr9srcs�t�|d�\}}|dkrd}|rBt|g}t|g}|r$|�|�|�|�tj|dd��t�fdd�|�d�D��r@t�|�dSdSt	d	|��)
z*Cleanup commands from the global namespace)NNrNT��universal_newlinesc3s�|]}|�vVqdS)Nr)�.0�item��outrr�	<genexpr>Ws�z_del_global.<locals>.<genexpr>�,zReset command unkown for:)
�GLOBALSr	r�appendr
�check_output�all�splitr�	Exception)r
rrr�del_cmd�get_cmd�args_get�args_delrrr�_del_global=s

�
r-cCs�|�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'�lenr-rrr
rr)r
r�settingrr'�colrrr�
clear_setting]sr6cCs(t|t�sJ�|�|d�}|o|jdkS)N�OpenVSwitch)�
isinstance�dictr	�backend)r�np_interface_dict�np_defrrr�is_ovs_interfaceksr=cCs�|��t�}|j��D]
}t||j�r|�|�qtj�t	�r�dD]Q}t
jt	ddddddd|d	g	d
d�}|��D]8}d|vrr|�
d
�d	}||vrLq:|d	dkrgt
�t	d|g�jd	krgt
�t	dd|g�q:t
�t	d|d|g�q:q"dD]a}d}	|dkr�d}	n|dkr�d}	t
jt	d|	dddddd|g	d
d�}|��D]9}d|vr�d}|}
|dkr�|�
d
d�\}}
|
�d��
d�D]}|�d�r�d|vr�|�
dd�\}}
t||||
�q�q�qvd S|s�|r�t�d�d Sd 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.
    ))�Portzdel-port)�Bridge�del-br)�	Interfacer@z--columns=name,external-idsz-f�csvz-d�barez
--no-headings�listrTrznetplan=truer"rAz	br-existsz--if-existszdel-bond-ifacer0)r>r?rA�Open_vSwitch�
Controllerzname,external-idsrEr2rFz_uuid,external-idsz--columns=%sznetplan/�.�"� �=zAovs-vsctl is missing, cannot tear down old OpenVSwitch interfacesN)�parser�all_defs�keysr=�add�os�path�isfilerr
r%�
splitlinesr'�run�
returncoder�strip�
startswithr6�logging�warning)�config_manager�ovs_old�ovs_current�
ovs_ifaces�i�tr �liner�cols�extids�entryr4�valrrr�apply_ovs_cleanupqsd
���"��������rd)rWrOr
rrrr#rrrr-r6r=rdrrrr�<module>s&��