%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/cloudinit/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/cloudinit/__pycache__/socket.cpython-312.pyc

�

���f;���dZddlZddlZddlZddlZddlZddlmZddlm	Z	eje�Zde
fd�ZGd�d�Zy)	z#A module for common socket helpers.�N)�suppress)�DEFAULT_RUN_DIR�messagec��tjjdd�}|sy|ddk(r|jddd�n|ddk7rt	d	��tj
t
jt
jt
jz�5}tjd
t|��|j|�|j|jd��ddd�y#1swYyxYw)z[Send a sd_notify message.

    :param message: sd-notify message (must be valid ascii)
    �
NOTIFY_SOCKET�Nr�@���/zUnsupported socket typezSending sd_notify(%s)�ascii)�os�environ�get�replace�OSError�socket�AF_UNIX�
SOCK_DGRAM�SOCK_CLOEXEC�LOG�info�str�connect�sendall�encode)r�socket_path�socks   �2/usr/lib/python3/dist-packages/cloudinit/socket.py�	sd_notifyr s���
�*�*�.�.��"�5�K���	�Q��3�	����C��q�)�
�Q��3�	��/�0�0�	�������)�)�F�,?�,?�?�
�.�	
����(�#�g�,�7����[�!����W�^�^�G�,�-�.�.�.�s
�AC0�0C9c�4�eZdZdZdefd�Zdefd�Zd�Zd�Zy)	�
SocketSyncz<A two way synchronization protocol over Unix domain sockets.�namesc	�0�d|_d|_d|_d|_d|_|D�cic]F}|tj
t
jt
jt
jz���Hc}|_	tjt�d�dd��|jj�D]O\}}t�d|�d	�}tt�5tj |�d
d
d
�|j#|��Qy
cc}w#1swY�"xYw)anInitialize a synchronization context.

        1) Ensure that the socket directory exists.
        2) Bind a socket for each stage.

        Binding the sockets on initialization allows receipt of stage
        "start" notifications prior to the cloud-init stage being ready to
        start.

        :param names: stage names, used as a unique identifiers
        rrFz/sharei�T)�mode�exist_ok�/share/z.sockN)�stage�remote�first_exception�systemd_exit_code�experienced_any_errorrrrr�socketsr�makedirsr�itemsr�FileNotFoundError�remove�bind)�selfr#�namerrs     r�__init__zSocketSync.__init__-s�����
����!���!"���%*��"�
�	
��
�&�-�-����� 1� 1�F�4G�4G� G��
�
���	����'�v�.�U�T�J��,�,�,�,�.�	#�J�D�$�,�-�W�T�F�%�@�K��+�,�
'��	�	�+�&�
'��I�I�k�"�		#��
�
'�
'�s�AD�D�D	r(c�L�||jvrtd|����||_|S)a�Set the stage before entering context.

        This enables the context manager to be initialized separately from
        each stage synchronization.

        :param stage: the name of a stage to synchronize

        Example:
            sync = SocketSync("stage 1", "stage 2"):
            with sync("stage 1"):
                pass
            with sync("stage 2"):
                pass
        zInvalid stage name: )r-�
ValueErrorr()r3r(s  r�__call__zSocketSync.__call__Ms/������$��3�E�7�;�<�<���
���c�,�tjtjj	��rt
j
d�yd|_td|j�d��tj�}|j|j}|jd�\}|_d|k7r+|jddd�t!dt#|��d	���t$�d
|j�d�t#|j�k7r+|jddd�t!d|j����tj�|z
}|d
kDrd|d�d�nd}td|j�d��t
j'd|j|�|S)z�Wait until a message has been received on this stage's socket.

        Once the message has been received, enter the context.
        z:Stdin is a tty, so skipping stage synchronization protocolNrzDSTATUS=Waiting on external services to complete before starting the z stage.�sstartzReceived invalid message: [�]r'z-return.sockz Unexpected path to unix socket: g{�G�z�?ztook z .3fzs to rzSTATUS=Running (z stage)z$sync(%s): synchronization %scomplete)r�isatty�sys�stdin�filenorrr+r r(�time�	monotonicr-�recvfromr)�__exit__r7rr�debug)r3�
start_timer�chunk�total�time_msgs      r�	__enter__zSocketSync.__enter__asj��
�9�9�S�Y�Y�%�%�'�(��H�H�L�
�
�!"����
,�,0�J�J�<�w�
@�	
��^�^�%�
��|�|�D�J�J�'��!�]�]�1�-���t�{��u���M�M�$��d�+��:�3�u�:�,�a�H�I�I�� ���
�
�|�<�
@�C��K�K�E
�
�

�M�M�$��d�+��?����}�M�N�N���� �:�-��05���U�5��,�e�,�"���$�T�Z�Z�L��8�9��	�	�8�$�*�*�h�O��r9c��d|j��}|r`d|_d|_t|��d|j��}d}|j
s||_tj|�td|���|jxst|j�|_|j|j}|j|j�|jd|�d|j�d	�j��|j�y)
z.Notify the socket that this stage is complete.z,Completed socket interaction for boot stage rTz in zkfatal error, run "systemctl status cloud-init-main.service" and "cloud-init status --long" for more detailszSTATUS=zecho 'z'; exit �;)r(r+r,�repr�tb_framer*r�fatalr �boolr-rr)rr�close)r3�exc_type�exc_val�exc_tbr�statusrs       rrDzSocketSync.__exit__�s���@�����M���%&�D�"�)-�D�&��W�
��d�6�?�?�*;�<�F�B�
��'�'�'-��$��I�I�f�����x�(�)�%)�%?�%?�&
�4��"�"�D
��"��|�|�D�J�J�'�����T�[�[�!�
	
����W�I�X�d�&<�&<�%=�Q�?�F�F�H�	
�	
�
�
��r9N)	�__name__�
__module__�__qualname__�__doc__rr5r8rJrD�r9rr"r"*s)��F�#�s�#�@�c��((�T#r9r")rY�loggingrrr>rA�
contextlibr�cloudinit.settingsr�	getLoggerrVrrr r"rZr9r�<module>r_sG��)��	�
�
���.��g����!��.�s�.�6D�Dr9

Zerion Mini Shell 1.0