HOME


Mini Shell 1.0
DIR: /usr/lib/python3/dist-packages/cloudinit/sources/azure/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cloudinit/sources/azure/__pycache__/imds.cpython-312.pyc
�

�f����ddlZddlmZddlmZmZmZmZddlZddlm	Z	ddl
mZddlm
Z
mZeje�ZdZGd�d	�Zd
dd�d
ededededef
d�Zd
ededefd�Z	ddedeedefd�Zdefd�Zy)�N)�time)�Dict�Optional�Type�Union)�util)�report_diagnostic_event)�UrlError�readurlzhttp://169.254.169.254/metadatac	�L�eZdZdZddddd�dedeedeed	dfd
�Zd	efd�Z	y)�ReadUrlRetryHandleraFManager for readurl retry behavior using exception_callback().

    :param logging_backoff: Backoff to limit logging.
    :param max_connection_errors: Number of connection errors to retry on.
    :param retry_codes: Set of http codes to retry on.
    :param retry_deadline: Optional time()-based deadline to retry until.
    ��?N)���i���logging_backoff�max_connection_errors�retry_codes�retry_deadlinerrr�returnc�f�||_||_||_||_d|_d|_d|_y)Nrr)rrrr�_logging_threshold�_request_count�_last_error)�selfrrrrs     �>/usr/lib/python3/dist-packages/cloudinit/sources/azure/imds.py�__init__zReadUrlRetryHandler.__init__s<�� /���%:��"�&���,���"%������37���c���|xjdz
c_t|t�std|ztj
��yd}|j�t�|jk\rd}nd}|j�Kt|jtj�r'|xjdzc_|jdkr)d}n&|j�|j|jvrd}|j|jk\r |xj|jzc_nd}|j�-|j |jk7rvd}|j|_nb|j �:t|j t"�r t|j|j �sd}t#|j�|_|s|s*td|j|fztj
��|S)N�z1Polling IMDS failed with unexpected exception: %r��logger_funcFTrz1Polling IMDS failed attempt %d with exception: %r)r�
isinstancer
r	�LOG�warningrrr�cause�requests�ConnectionError�coderrrr�type)r�req_args�	exception�log�retrys     r�exception_callbackz&ReadUrlRetryHandler.exception_callback2s������q� ���)�X�.�#�C����K�K�
�
������*�t�v��9L�9L�/L��E��E�
�%�%�1�j��O�O�X�5�5�7
�
�&�&�!�+�&��)�)�Q�.����N�N�&����d�&6�&6�6��E����$�"9�"9�9��#�#�t�';�';�;�#��C��>�>�%����9�>�>�1���#,�>�>�� �
���$��d�.�.��5��i�o�o�t�/?�/?�@��C�#�I�O�O�4�D���e�#�C��&�&�	�2�3��K�K�
�
�r)
�__name__�
__module__�__qualname__�__doc__�floatr�intr�boolr0�rrr
r
sZ���"%�/3�
�+/�8��8� (��}�	8�!���8�
�8�*;��;rr
T�)�log_response�timeout�url�
retry_handlerr:r;rc��	t||jddid||��}|jS#t$r$}td|ztj
���d}~wwxYw)a'Fetch URL from IMDS.

    :param url: url to fetch.
    :param log_response: log responses in readurl().
    :param retry_deadline: time()-based deadline to retry until.
    :param timeout: Read/connection timeout in seconds for readurl().

    :raises UrlError: on error fetching metadata.
    �Metadata�trueT��exception_cb�headers�infinite�log_req_respr;z&Failed to fetch metadata from IMDS: %sr"N)rr0r
r	r%r&�contents)r<r=r:r;�response�errors      r�
_fetch_urlrIpsj�� ���&�9�9���(��%��

����������4�u�<����	
�	���s�+�	A�A�Ac���t||��}	tj|jd��S#t$r$}td|ztj���d}~wwxYw)z�Fetch IMDS metadata.

    :param url: url to fetch.
    :param retry_deadline: time()-based deadline to retry until.

    :raises UrlError: on error fetching metadata.
    :raises ValueError: on error parsing metadata.
    �r=zutf-8z&Failed to parse metadata from IMDS: %sr"N)rIr�	load_json�decode�
ValueErrorr	r%r&)r<r=�metadatarHs    r�_fetch_metadatarP�sY���#�]�;�H���~�~�h�o�o�g�6�7�7�����4�u�<����	
�	���s�#3�	A �A�A rrc��t||��}	tdz}t||��S#t$rX}|jdk(rCtdtj��t||��}tdz}t||��cYd}~S�d}~wwxYw)	z�Fetch extended metadata, falling back to non-extended as required.

    :param retry_deadline: time()-based deadline to retry until.

    :raises UrlError: on error fetching metadata.
    :raises ValueError: on error parsing metadata.
    )rrz./instance?api-version=2021-08-01&extended=truerKi�z,Falling back to IMDS api-version: 2019-06-01r"z /instance?api-version=2019-06-01N)r
�IMDS_URLrPr
r*r	r%r&)rrr=r<rHs     r� fetch_metadata_with_api_fallbackrS�s���(�3�%��M���I�I���s�-�@�@�����:�:���#�>��K�K�
�0�&;�-��M��?�?�C�"�3�m�D�D�
���s!�%�	B�AB�:B�B�Bc���tdz}tdddd��}t||jddid	d
d��}t	d
|j
dz�d�tj��|jS)zhFetch extended metadata, falling back to non-extended as required.

    :raises UrlError: on error.
    z'/reprovisiondata?api-version=2019-06-01g@r!)rrrNrr?r@TFr9rAzPolled IMDS z time(s)r")	rRr
rr0r	rr%�debugrF)r<�handlerrGs   r�fetch_reprovision_datarW�s���
�>�
>�C�!���
�
�	�G����/�/��V�$����
�H��
�w�-�-�a�/�0��9��I�I�����r)N)�loggingr�typingrrrrr(�	cloudinitr�cloudinit.sources.helpers.azurer	�cloudinit.url_helperr
r�	getLoggerr1r%rRr
�strr7r6�bytesrIrPr5rSrWr8rr�<module>r`s���
��.�.���C�2��g����!��,��Y�Y�@�� �	� �'� ��	 �
� ��
 �F�	��'��
�	�4CG����2:�3�-��	��@��r