Current Dir: /snap/core22/2955/usr/lib/python3/dist-packages/cloudinit/sources/azure/__pycache__/
[FILE] errors.cpython-310.pyc [ edit | delete | rename ]
[FILE] identity.cpython-310.pyc [ edit | delete | rename ]
[FILE] imds.cpython-310.pyc [ edit | delete | rename ]
[FILE] kvp.cpython-310.pyc [ edit | delete | rename ]
[FILE] __init__.cpython-310.pyc [ edit | delete | rename ]
Viewing: /snap/core22/2955/usr/lib/python3/dist-packages/cloudinit/sources/azure/__pycache__/imds.cpython-310.pyc
o
��i� � @ s� d dl Z d dlZd dlmZ d dlmZmZmZmZ d dl Z d dl
mZ d dlm
Z
d dlmZmZ e �e�ZdZdd � ZG d
d� d�Zdd
d�dededededef
dd�Zdededefdd�Z ddedee defdd�Zdefdd�ZdS )� N)� monotonic)�Dict�Optional�Type�Union)�util)�report_diagnostic_event)�UrlError�readurlzhttp://169.254.169.254/metadatac C s dt t�� �d�S )N�true)�Metadatazx-ms-client-request-id)�str�uuid�uuid4)�_url� r �>/usr/lib/python3/dist-packages/cloudinit/sources/azure/imds.py�
headers_cb s
�r c @ sL e Zd ZdZddddd�dedee dee d dfd
d�Zd efdd
�Z dS )�ReadUrlRetryHandleraK Manager 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 monotonic()-based deadline to retry until.
� �?N)i� i� i� i� )�logging_backoff�max_connection_errors�retry_codes�retry_deadliner r r �returnc C s. || _ || _|| _|| _d| _d| _d | _d S )Nr r )r r r r �_logging_threshold�_request_count�_last_error)�selfr r r r r r r �__init__% s
zReadUrlRetryHandler.__init__c C s@ | j d7 _ t|t�std| tjd� dS d}| jd ur't� | jkr'd}nd}| jd urDt|j t
j�rD| jd8 _| jdkrCd}n
|jd urQ|j| j
vrQd}| j | jkr`| j| j9 _nd}|jd urt| j|jkrsd}|j| _n| jd u s�t| jt�r�t|j | j�s�d}t|j �| _|s�|s�td| j |f tjd� |S )N� z1Polling IMDS failed with unexpected exception: %r��logger_funcFTr z1Polling IMDS failed attempt %d with exception: %r)r �
isinstancer r �LOG�warningr r r �cause�requests�ConnectionError�coder r r r �type)r � exception�log�retryr r r �exception_callback: s^
��
�
�
�
����z&ReadUrlRetryHandler.exception_callback)
�__name__�
__module__�__qualname__�__doc__�floatr �intr �boolr. r r r r r s ����
�r T� )�log_response�timeout�url�
retry_handlerr7 r8 r c
C sL zt | |jtd||d�}W |jS ty% } z
td| tjd� � d}~ww )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.
T��exception_cbr �infinite�log_req_respr8 z&Failed to fetch metadata from IMDS: %sr! N)r
r. r r r r$ r% �contents)r9 r: r7 r8 �response�errorr r r �
_fetch_url{ s$ �����rB c
C sL t | |d�}z t�|�d��W S ty% } z
td| tjd� � d}~ww )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)rB r � load_json�decode�
ValueErrorr r$ r% )r9 r: �metadatarA r r r �_fetch_metadata� s
���rH r r c
C s� t || d�}ztd }t||d�W S ty@ } z#|jdkr;tdtjd� t || d�}td }t||d�W Y d}~S � d}~ww ) 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.
)r r z./instance?api-version=2021-08-01&extended=truerC i� z,Falling back to IMDS api-version: 2019-06-01r! z /instance?api-version=2019-06-01N)r �IMDS_URLrH r r) r r$ r% )r r r: r9 rA r r r � fetch_metadata_with_api_fallback� s,
�
����rJ c C sN t d } tdddd�}t| |jtdddd �}td
|jd � d�tjd� |j S )
zhFetch extended metadata, falling back to non-extended as required.
:raises UrlError: on error.
z'/reprovisiondata?api-version=2019-06-01g @r N)r r r TFr6 r; zPolled IMDS z time(s)r! )
rI r r
r. r r r r$ �debugr? )r9 �handlerr@ r r r �fetch_reprovision_data� s&