Server : nginx/1.24.0 System : Linux ip-172-31-33-48 6.14.0-1011-aws #11~24.04.1-Ubuntu SMP Fri Aug 1 02:07:25 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE Directory : /lib/python3/dist-packages/cloudinit/__pycache__/ |
Upload File : |
� x[h� � � � d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl m Z ej e� Z defd�Z G d� d � Zy) z#A module for common socket helpers.� N)�suppress)�performance)�DEFAULT_RUN_DIR�messagec � � t j j dd� }|sy|d dk( r|j ddd� n|d dk7 rt d � �t j t j t j t j z � 5 }t j d t | � � |j |� |j | j d� � ddd� y# 1 sw Y yxY w)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 � e Zd ZdZdefd�Zdefd�Zd� Zd� Zy) � SocketSyncz<A two way synchronization protocol over Unix domain sockets.�namesc �0 � d| _ d| _ d| _ d| _ d| _ |D �ci c]F }|t j t j t j t j z � ��H c}| _ t j t � d�dd�� | j j � D ]O \ }}t � d|� d �}t t � 5 t j |� d d d � |j# |� �Q y c c}w # 1 sw Y �"xY w)an Initialize 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 r r Fz/sharei� T)�mode�exist_ok�/share/z.sockN)�stage�remote�first_exception�systemd_exit_code�experienced_any_errorr r r r �socketsr �makedirsr �itemsr �FileNotFoundError�remove�bind)�selfr$ �namer r s 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 � || j vrt d|� �� �|| _ | 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) )r4 r) s r �__call__zSocketSync.__call__M s/ � � ����$��3�E�7�;�<�<��� ��� c �� � t j t j j � � rt j d� yd| _ t d| j � d�� | j | j }t j d| j � �� 5 |j d� \ }| _ ddd� dk7 r+| j ddd� t! d t# |� � d �� �t$ � d| j � d�t# | j � k7 r+| j ddd� t! d | j � �� �t d| j � d�� | S # 1 sw Y ��xY w)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 protocolNr zDSTATUS=Waiting on external services to complete before starting the z stage.zWaiting to start stage � s startzReceived invalid message: [�]r( z-return.sockz Unexpected path to unix socket: zSTATUS=Running (z stage))r �isatty�sys�stdin�filenor r r, r! r) r. r �Timed�recvfromr* �__exit__r8 r r )r4 r �chunks r � __enter__zSocketSync.__enter__a sO � � �9�9�S�Y�Y�%�%�'�(��H�H�L� � �!"���� ,�,0�J�J�<�w� @� � �|�|�D�J�J�'�� � � �!8�����E� F� 2�!%���q�!1��E�4�;� 2� �u���M�M�$��d�+��:�3�u�:�,�a�H�I�I�� ��� � �|�<� @�C��K�K�E � � �M�M�$��d�+��?����}�M�N�N��$�T�Z�Z�L��8�9���! 2� 2�s �#E'�'E0c � � d| j � �}|r`d| _ d| _ t |� � d|j � �}d}| j s|| _ t j |� t d|� �� | j xs t | j � | _ | j | j }|j | j � |j d|� d| j � d �j � � |j � y) z.Notify the socket that this stage is complete.z,Completed socket interaction for boot stage r Tz 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. r r* r r �close)r4 �exc_type�exc_val�exc_tbr �statusr s r rD zSocketSync.__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� � � � �� r: N) �__name__� __module__�__qualname__�__doc__r r6 r9 rF rD � r: r r# r# * s) � �F�#�s� #�@�c� �(%�N#r: r# )rU �loggingr r r? � contextlibr � cloudinitr �cloudinit.settingsr � getLoggerrR r r r! r# rV r: r �<module>r\ sG �� )� � � � � � !� .��g����!��.�s� .�6A� Ar: