File: //usr/lib/python3/dist-packages/uaclient/clouds/__pycache__/aws.cpython-310.pyc
o
nHJe � @ s� d dl Z d dlmZmZ d dlmZmZmZmZ d dl m
Z
dZdZeefZ
dZdZd Zd
ZdZdZd
Zed Ze �e�e��ZG dd� de
�ZdS )� N)�Any�Dict)�
exceptions�http�system�util)�AutoAttachCloudInstancez169.254.169.254z[fd00:ec2::254]zhttp://{}/latest/api/tokenz0http://{}/latest/dynamic/instance-identity/pkcs7z/sys/hypervisor/uuidz /sys/class/dmi/id/product_serialz/sys/class/dmi/id/product_uuid�21600zX-aws-ec2-metadata-tokenz-ttl-secondsc @ s� e Zd ZdZdZdd� Zeeje j
g d�d�deee
f fdd���Zd d
� Zeje j
g d�d�dd
� �Zedefdd��Zedefdd��Zdefdd�Zdedefdd�ZdS )�UAAutoAttachAWSInstanceNc C sB | � � }tjt�| j�|dd�}|jdkr|jS tj |j|jd��)N� )�headers�timeout�� ��code�body)
�_request_imds_v2_token_headersr �readurl�IMDS_URL�format�_ip_addressr r r �CloudMetadataError)�selfr �response� r �5/usr/lib/python3/dist-packages/uaclient/clouds/aws.py�_get_imds_url_response s �
�z.UAAutoAttachAWSInstance._get_imds_url_response)g �?r r )�retry_sleeps�returnc C s d| � � iS )N�pkcs7)r �r r r r �identity_doc+ s z$UAAutoAttachAWSInstance.identity_docc C s| t D ]+}z| j|d�}W n ty) } zt�d|t|dd�� W Y d }~qd }~ww || _ | jd u r<tjd� t �d��|S )N)�
ip_addressz*Could not reach AWS IMDS at http://%s: %s
�reason� z, )� addresses)
�IMDS_IP_ADDRESS�_get_imds_v2_token_headers� Exception�LOG�warning�getattrr r �AWSNoValidIMDS�join)r �addressr �er r r r 0 s$
���
�z6UAAutoAttachAWSInstance._request_imds_v2_token_headers)r � � c C s| | j dkrd S | j rt| j iS tjt�|�dttidd�}|jdkr+|j | _ t| j iS |jdkr5d| _ d S t
j|j|j d��)N�IMDSv1�PUTr )�methodr r
r i� r )�
_api_token�AWS_TOKEN_PUT_HEADERr r �IMDS_V2_TOKEN_URLr �AWS_TOKEN_REQ_HEADER�AWS_TOKEN_TTL_SECONDSr r r r )r r"