Current File : //usr/share/netplan/netplan_cli/cli/__pycache__/ovs.cpython-312.pyc
�

Z9
g�!���ddlZddlZddlZddlmZmZdZdZddd�Zdd	d
d�Z	Gd�d
e
�ZGd�de
�Zd�Z
d�Zd�Zd�Zd�Zd�Zy)�N�)�systemctl_is_active�systemctl_is_installedz/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��eZdZy)�OvsDbServerNotRunningN��__name__�
__module__�__qualname__���)/usr/share/netplan/netplan_cli/cli/ovs.pyrr)���rrc��eZdZy)�OvsDbServerNotInstalledNrrrrrr-rrrc�n�tj|�}|�Itd||||g}tjddj|�z�t
j|�y|rS||k7rMtd|||�d|��g}tjddj|�z�t
j|�yyy)z2Cleanup values from a column (i.e. "column=value")N�remove�Running: %s� �set�=)�DEFAULTS�get�OPENVSWITCH_OVS_VSCTL�logging�debug�join�
subprocess�
check_call)�type�iface�column�value�default�cmds      r�_del_colr*1s����l�l�6�"�G���$�h��e�V�U�K���
�
�m�c�h�h�s�m�3�4����c�"�	�W��%�$�e�T�5�V�W�:U�V���
�
�m�c�h�h�s�m�3�4����c�"�	&�rc	��td||||�d|�d�g}tjddj|�z�t	j
|�y)z:Cleanup values from a dictionary (i.e. "column:key=value")rz="�"rrN)rrr r!r"r#)r$r%r&�keyr'r)s      r�	_del_dictr.@sD��!�(�D�%��PS�UZ�A[�
\�C��M�M�-�#�(�(�3�-�/�0����#�rc�j��tj|d�\}}|dk(rd}|r�t|g}t|g}|r"|j|�|j|�t	j
|d���t
�fd�|jd�D��rt	j|�yytd|��)	z*Cleanup commands from the global namespace)NNr	NT��textc3�&�K�|]}|�v���
y�w)Nr)�.0�item�outs  �r�	<genexpr>z_del_global.<locals>.<genexpr>bs�����8�t�t�s�{�8�s��,zReset command unknown for:)
�GLOBALSrr�appendr"�check_output�all�splitr#�	Exception)	r$r%r-r'�del_cmd�get_cmd�args_get�args_delr5s	        @r�_del_globalrBHs�����{�{�3��5��G�W��)�����)�7�3��)�7�3����O�O�E�"��O�O�E�"��%�%�h�T�:���8�u�{�{�3�'7�8�8��!�!�(�+�9��4�c�:�:rc�$�|jdd�}|d}|dk(r t|�dkDrt|||d|�n5t|�dkDrt|||d|d|�nt	|||d|�tjtd||d|g�y)zDCheck if this setting is in a dict or a colum and delete accordingly�/�r�globalr�external-idsN)r<�lenrBr.r*r"r#r)r$r%�settingr'r<�cols      r�
clear_settingrKhs����M�M�#�q�!�E�
��(�C�
�h��3�u�:��>��D�%��q��5�1�	�U��a���$��u�Q�x��q��5�9���u�e�A�h��.����0�(�D�%��Y`�a�brc�p�t|t�sJ�|j|d�}|xr|jdk(S)N�OpenVSwitch)�
isinstance�dictr�backend)r%�np_interface_dict�np_defs   r�is_ovs_interfacerSvs9���'��.�.�.�
�
"�
"�5�$�
/�F��5�f�n�n�
�5�5rc
�,�tt�stdtz��tt�st	djt���|j
�t�}|jj�D]*}t||j�s�|j|��,tjjt��r�dD]�}t!j"tdddddd	d
|dg	d�
�}|j%�D]�}d|vs�|j'd�d}||vr�!|ddk(rGt!j(td|g�j*dkDrt!j,tdd|g��pt!j,td|d|g�����dD]�}d}	|dk(rd}	n|dk(rd}	t!j"td|	zddddd	d
|g	d�
�}|j%�D]�}d|vs�d}|}
|dk7r|j'dd�\}}
|
j/d�j'd�D]<}|j1d�s�d |vs�|j'd d�\}}
t3||||
��>����y"|s|rt5j6d!�y"y")#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+Cannot apply OVS cleanup: %s is 'not-found'z{} is not running))�Portzdel-port)�Bridge�del-br)�	InterfacerWz--columns=name,external-idsz-f�csvz-d�barez
--no-headings�listrTr0znetplan=truer7rXz	br-existsz--if-existszdel-bond-ifacer)rUrVrX�Open_vSwitch�
Controllerzname,external-idsr\rGr]z_uuid,external-idsz--columns=%sznetplan/�.r,rrzAovs-vsctl is missing, cannot tear down old OpenVSwitch interfacesN)r�OPENVSWITCH_OVSDB_SERVER_UNITrrr�format�parser�netdefs�keysrS�add�os�path�isfilerr"r:�
splitlinesr<�run�
returncoder#�strip�
startswithrKr�warning)�config_manager�ovs_old�ovs_current�
ovs_ifaces�i�tr5�liner%�cols�extids�entryrI�vals              r�apply_ovs_cleanupry|s���"�"?�@�%�&S�&C�'D�E�	E��<�=�#�$7�$>�$>�?\�$]�^�^�������J�
�
#�
#�
(�
(�
*����Q�� 6� 6�7��N�N�1���
�w�w�~�~�+�,�V�
	c�A��)�)�+@�B_�+/���f�o�W]�_`�ab�_c�+e�/3�5�C����(�	
c��!�T�)� �J�J�s�O�A�.�E��
�*� ���t�{�*�z�~�~�?T�Va�ch�>i�/j�/u�/u�xy�/y�"�-�-�/D�m�Ue�gl�.m�n�"�-�-�/D�m�UV�WX�UY�[`�.a�b�	
c�	
	c� O�	B�A�&�D��N�"�%���l�"�+���)�)�+@�.�SW�BW�+/���f�o�W]�_`�+b�/3�5�C����(�
B����%��E�!�F��N�*�(,�
�
�3��(:�
��v�"(���c�!2�!8�!8��!=�B�� �+�+�J�7�C�5�L�+0�;�;�s�A�+>�L�G�S�)�!�U�G�S�A�B�
B�	B�0
�K����[�\� r)rrer"�utilsrrrr_rr8r=rrr*r.rBrKrSryrrr�<module>r{sz��$�	��>�,�� 6��
%����&�7�:�	��	�I�	�	�i�	�#��;�@c�6�B]r