Current File : //usr/lib/python3/dist-packages/cloudinit/net/__pycache__/activators.cpython-312.pyc
�

Ӈg�.�	��UddlZddlmZmZddlmZddlmZmZm	Z	m
Z
mZmZm
Z
ddlmZmZddlmZmZmZmZddlmZddlmZej4e�ZGd	�d
e�Z	d$dede d
e!de!fd�Z"	d$ded
e!de!fd�Z#Gd�de�Z$Gd�de$�Z%Gd�de$�Z&Gd�de$�Z'Gd�de$�Z(Gd�de$�Z)gd�Z*e%e(e'e)e&d�Z+ee ee$fe,d<d e
e d!e
e dfdeee$fd"�Z-	d%d ee
e d!ee dee$fd#�Z.y)&�N)�ABC�abstractmethod)�partial)�Callable�Dict�Iterable�List�Optional�Type�Union)�subp�util)�eni�netplan�network_manager�networkd)�Iproute2)�NetworkStatec��eZdZy)�NoActivatorExceptionN)�__name__�
__module__�__qualname__���:/usr/lib/python3/dist-packages/cloudinit/net/activators.pyrrs��rr�cmd�device_name�warn_on_stderr�returnc�J�tttj|�|�S)z2Attempt to alter an interface using a command list)�_alter_interface_callablerr
)rrrs   r�_alter_interfacer#s��%�W�T�Y�Y��%<�n�M�Mr�callablec��	|�\}}t|�r+|rtjntj}|d|�y#tj
$r/}t
jtd|j�Yd}~yd}~wwxYw)z�Attempt to alter an interface using a callable

    this function standardizes logging and response to failure for
    various activators
    zReceived stderr output: %sTz#Running interface command %s failedNF)	�len�LOG�warning�debugr
�ProcessExecutionErrorr�logexcr)r$r�_out�err�
log_stderr�es      rr"r"sf����J�	��c��s�8�(6����C�I�I�J��3�S�9����%�%�����C�>����F����s�AA�B�%B�Bc���eZdZeed
deedefd���Zeededefd���Z	eededefd���Z
edeedefd	��Z
ed
edefd��Zedd��Zy)�NetworkActivatorN�targetr c��t��)z>Return True if activator is available, otherwise return False.��NotImplementedError�r2s r�	availablezNetworkActivator.available.s
��"�#�#rrc��t��)zWBring up interface.

        Return True is successful, otherwise return False
        r4�rs r�bring_up_interfacez#NetworkActivator.bring_up_interface4�
��"�#�#rc��t��)zYBring down interface.

        Return True is successful, otherwise return False
        r4r9s r�bring_down_interfacez%NetworkActivator.bring_down_interface=r;r�device_namesc�,��t�fd�|D��S)zjBring up specified list of interfaces.

        Return True is successful, otherwise return False
        c3�@�K�|]}�j|����y�w�N)r:)�.0�device�clss  �r�	<genexpr>z7NetworkActivator.bring_up_interfaces.<locals>.<genexpr>Ls�����M�f�3�)�)�&�1�M�s�)�all)rDr>s` r�bring_up_interfacesz$NetworkActivator.bring_up_interfacesFs����M��M�M�Mr�
network_statec�l�|j|j�D�cgc]}|d��	c}�Scc}w)z\Bring up all interfaces.

        Return True is successful, otherwise return False
        �name)rG�iter_interfaces)rDrH�is   r�bring_up_all_interfacesz(NetworkActivator.bring_up_all_interfacesNs5���&�&� -� =� =� ?�@�1�Q�v�Y�@�
�	
��@s�1c��t��)zWait for network to come up.r4rrr�wait_for_networkz!NetworkActivator.wait_for_networkXs
��"�#�#rrA�r N)rrr�staticmethodrr
�str�boolr7r:r=�classmethodrrGrrMrOrrrr1r1-s�����$�(�3�-�$�4�$���$���$��$��$���$���$�#�$�$�$���$��N�x��}�N��N��N��
�L�
�T�
��
��$��$rr1c�b�eZdZeddeedefd��Zededefd��Zededefd��Z	y)	�IfUpDownActivatorNr2r c�.�tj|��S�z3Return true if ifupdown can be used on this system.r6)rr7r6s rr7zIfUpDownActivator.availablecs���}�}�F�+�+rrc�"�d|g}t||�S)�bBring up interface using ifup.

        Return True is successful, otherwise return False
        �ifup�r#�rrs  rr:z$IfUpDownActivator.bring_up_interfacehs���{�#����[�1�1rc�"�d|g}t||�S)rZ�ifdownr\r]s  rr=z&IfUpDownActivator.bring_down_interfaceqs����%����[�1�1rrA)
rrrrQr
rRrSr7r:r=rrrrVrV^sl��
�,�(�3�-�,�4�,��,��2��2��2��2��2�#�2�$�2��2rrVc�X�eZdZeddefd��Zededefd��Zededefd��Zy)�IfConfigActivatorNr c�N�d}dg}ttj|||���S)z3Return true if ifconfig can be used on this system.�ifconfigz/sbin)�searchr2)rSr
�which)r2�expectedrds   rr7zIfConfigActivator.available|s(��������D�J�J�x��v�F�G�Grrc�$�d|dg}t||�S)zoBring up interface using ifconfig <dev> up.

        Return True is successful, otherwise return False
        rc�upr\r]s  rr:z$IfConfigActivator.bring_up_interface�s���;��-����[�1�1rc�$�d|dg}t||�S)zqBring up interface using ifconfig <dev> down.

        Return True is successful, otherwise return False
        rc�downr\r]s  rr=z&IfConfigActivator.bring_down_interface�s���;��/����[�1�1rrA)	rrrrQrSr7rRr:r=rrrrara{sb���H�$�H��H��2��2��2��2��2�#�2�$�2��2rrac�x�eZdZed	defd��Zededefd��Zededefd��Ze	de
edefd��Zy)
�NetworkManagerActivatorNr c�.�tj|��S)z9Return true if NetworkManager can be used on this system.r6)rr7r6s rr7z!NetworkManagerActivator.available�s���(�(��7�7rrc���ddlm}||�}|�tjd�yddd|g}t	||�rdddd	|g}nt	gd
�|�dddd|g}t	||�S)zdBring up connection using nmcli.

        Return True is successful, otherwise return False
        r)�
conn_filenamezFUnable to find an interface config file. Unable to bring up interface.F�nmcli�
connection�loadrh�filename)rprq�reload�ifname)�cloudinit.net.network_managerror'r(r#)rrorsrs    rr:z*NetworkManagerActivator.bring_up_interface�s~��	@� ��-�����K�K�0�
����f�h�7���C��-��L�$�
�H�E�C��>��L��L�$��+�F�C���[�1�1rc�&�ddd|g}t||�S)zeBring down interface using nmcli.

        Return True is successful, otherwise return False
        rprC�
disconnectr\r]s  rr=z,NetworkManagerActivator.bring_down_interface�s����,��<����[�1�1rr>c��tjgd��jj�}d|k7rtj	d|�tgd�d�S)z9Activate network

        Return True on success
        )�	systemctl�showz--property=SubState�NetworkManager.servicezSubState=runningz:Expected NetworkManager SubState=running, but detected: %s)rzzreload-or-try-restartr|rF)r
�stdout�rstripr'r(r#)rDr>�states   rrGz+NetworkManagerActivator.bring_up_interfaces�sX���	�	�
�
��&����	���&��K�K�L��
� �L��
�	
rrA)rrrrQrSr7rRr:r=rTrrGrrrrlrl�s����8�$�8��8��2��2��2��2�.�2�#�2�$�2��2��
�x��}�
��
��
rrlc��eZdZddgZeddefd��Zededefd��Zede	edefd	��Z
ed
edefd��Zededefd��Z
edd
��Zy)�NetplanActivatorr�applyNr c�.�tj|��S)z2Return true if netplan can be used on this system.r6)rr7r6s rr7zNetplanActivator.available�s��� � ��/�/rrc�d�tjd�ttjdd��S��YApply netplan config.

        Return True is successful, otherwise return False
        zBCalling 'netplan apply' rather than altering individual interfacesrFF�r�r'r)r#r��NETPLAN_CMDr9s rr:z#NetplanActivator.bring_up_interface��1��	�	�	�
-�	
� ��(�(�%��
�	
rr>c�d�tjd�ttjdd��Sr�r�)r>s rrGz$NetplanActivator.bring_up_interfaces�r�rrHc�:�ttjdd��S)r�rFFr�)r#r�r�)rHs rrMz(NetplanActivator.bring_up_all_interfaces�s�� ��(�(�%��
�	
rc�d�tjd�ttjdd��Sr�r�r9s rr=z%NetplanActivator.bring_down_interfacer�rc��tj�rtjd�ytj�y)z:On networkd systems, wait for systemd-networkd-wait-onlinez1NetworkManager is enabled, skipping networkd waitN)rr7r'r)�NetworkdActivatorrOrrrrOz!NetplanActivator.wait_for_networks,���$�$�&��I�I�I�J���*�*�,rrArP)rrrr�rQrSr7rRr:rrGrrMr=rOrrrr�r��s����g�&�K��0�$�0��0��
��
��
��
��
�(�3�-�
�D�
��
��
�|�
��
��
��
�#�
�$�
��
��-��-rr�c��eZdZed
defd��Zededefd��Zededefd��Z	ededefd��Z
edd	��Zy)r�Nr c�.�tj|��SrX)rr7r6s rr7zNetworkdActivator.availables���!�!��0�0rrc�H�tttj|��S��1Return True is successful, otherwise return False)r"rr�link_upr9s rr:z$NetworkdActivator.bring_up_interface"s!��)��H�$�$�k�2�
�	
rrHc�"�gd�}t|d�S)r�)rz�restartzsystemd-networkdzsystemd-resolvedrFr\)rHrs  rrMz)NetworkdActivator.bring_up_all_interfaces)s��O����U�+�+rc�H�tttj|��Sr�)r"rr�	link_downr9s rr=z&NetworkdActivator.bring_down_interface/s!��)��H�&�&��4�
�	
rc�2�tjgd��y)z&Wait for systemd-networkd-wait-online.)rz�startz$systemd-networkd-wait-online.serviceN)r
rrrrOz"NetworkdActivator.wait_for_network6s��	
�	�	�J�	
rrArP)rrrrQrSr7rRr:rrMr=rOrrrr�r�s����1�$�1��1��
��
��
��
��,�|�,��,��,�
�
�#�
�$�
��
��
��
rr�)rrznetwork-managerrrc�NAME_TO_ACTIVATOR�priorityr2c���|D�cgc]
}|tvs�|��}}|rtd|����|D�cgc]}t|��
}}t�fd�|D�d�Scc}wcc}w)zEReturns the first available activator from the priority list or None.z.Unknown activators provided in priority list: c3�D�K�|]}|j��r|���y�wrA)r7)rB�
activator_clsr2s  �rrEz#search_activator.<locals>.<genexpr>\s'�����	
���&�&�v�.�
�	
�s� N)�DEFAULT_PRIORITY�
ValueErrorr��next)r�r2rL�unknownrJ�activator_classess `    r�search_activatorr�Qs����#�@�Q�a�/?�&?�q�@�G�@���<�W�I�F�
�	
�>F�F�T�*�4�0�F��F��	
�!2�	
�
	
�
���
A��
Gs�
A�A�Ac��|�t}t||�}|s|r
|dk7rd|��nd}td|�d|����tj	d||�|S)N�/z in target=�z%No available network activators foundz. Searched through list: z.Using selected activator: %s from priority: %s)r�r�rr'r))r�r2�selected�tmsgs    r�select_activatorr�ess����#����&�1�H��)/�F�c�M��V�H�%�r��"�3�D�6�:&�&.�Z�
1�
�	
��I�I�8�(�H���Or)T)NN)/�logging�abcrr�	functoolsr�typingrrrr	r
rr�	cloudinitr
r�
cloudinit.netrrrr�cloudinit.net.netops.iproute2r�cloudinit.net.network_stater�	getLoggerrr'�	Exceptionr�listrRrSr#r"r1rVrarlr�r�r�r��__annotations__r�r�rrr�<module>r�s����#��H�H�H� �A�A�2�4��g����!��	�9�	�
9=�N�	
�N��N�15�N�	�N�04����(,��	��&.$�s�.$�b2�(�2�:2�(�2�6=
�.�=
�@C-�'�C-�L
�(�
�H����.�!�!�8��4��T�"2�3�3�4����3�i��!&�s�D�y�!1��
�d�#�$�%��*CG���t�C�y�!��2:�3�-��	�
��r