| Current Path : /lib/python3/dist-packages/uaclient/clouds/__pycache__/ |
| Current File : //lib/python3/dist-packages/uaclient/clouds/__pycache__/aws.cpython-38.pyc |
U
8�-d� � @ s� d dl Z d dlmZmZ d dlmZ d dlmZmZm Z d dl
mZ dZdZ
ee
fZdZd Zd
ZdZdZd
ZdZed ZG dd� de�ZdS )� N)�Any�Dict)� HTTPError)�
exceptions�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_uuidZ21600zX-aws-ec2-metadata-tokenz-ttl-secondsc @ s� e Zd ZdZdZdd� Zeeje dddgd�e
eef d�dd ���Z
d
d� Zeje ddd
gd�dd� �Zeed�dd��Zeed�dd��Zed�dd�Zeed�dd�ZdS )�UAAutoAttachAWSInstanceNc C s | � � }tjt�| j�|dd�S )N� )�headers�timeout)�_request_imds_v2_token_headersr �readurl�IMDS_URL�format�_ip_address)�selfr � r �5/usr/lib/python3/dist-packages/uaclient/clouds/aws.py�_get_imds_url_response s
�z.UAAutoAttachAWSInstance._get_imds_url_responseg �?r
)Zretry_sleeps)�returnc C s | � � \}}d|iS )NZpkcs7)r )r �response�_headersr r r �identity_doc% s z$UAAutoAttachAWSInstance.identity_docc C s� t D ]�}z| j|d�}W nf tk
r> } z|�W 5 d }~X Y q tk
r~ } z$dj|t|dd�d�}t�|� W 5 d }~X Y qX || _ q�q| jd kr�t �
dd�t � ��|S )N)�
ip_addressz8Could not reach AWS IMDS at http://{endpoint}: {reason}
�reason� )Zendpointr z6No valid AWS IMDS endpoint discovered at addresses: %sz, )�IMDS_IP_ADDRESS�_get_imds_v2_token_headersr � Exceptionr �getattr�logging�debugr r ZUserFacingError�join)r Zaddressr �e�msgr r r r
+ s*
��
��z6UAAutoAttachAWSInstance._request_imds_v2_token_headers� � c
C s� | j dkrd S | j rt| j iS z$tjt�|�dttidd�\}}W n> tk
r� } z |j dkrnd| _ W Y �
d S � W 5 d }~X Y nX || _ t| j iS )NZIMDSv1ZPUTr
)�methodr r i� )
�
_api_token�AWS_TOKEN_PUT_HEADERr r �IMDS_V2_TOKEN_URLr �AWS_TOKEN_REQ_HEADER�AWS_TOKEN_TTL_SECONDSr �code)r r r r r$ r r r r C s$
�
z2UAAutoAttachAWSInstance._get_imds_v2_token_headersc C s dS )NZawsr �r r r r �
cloud_typeZ s z"UAAutoAttachAWSInstance.cloud_typec C s� z$t �t�}d|dd� kr"W dS W n tk
r8 Y nX t �t��� }t �t��� }d|dd� krz|dd� kr�n ndS dS )z$This machine is a viable AWSInstanceZec2r � TF)r Z load_file�SYS_HYPERVISOR_PRODUCT_UUID�FileNotFoundError�DMI_PRODUCT_UUID�lower�DMI_PRODUCT_SERIAL)r Zhypervisor_uuidZdmi_uuidZ
dmi_serialr r r � is_viable^ s
(z!UAAutoAttachAWSInstance.is_viablec C s dS )ZUnsupportedFr r/ r r r �should_poll_for_pro_licensep s z3UAAutoAttachAWSInstance.should_poll_for_pro_license)�wait_for_changer c C s t �� �d S )N)r ZInPlaceUpgradeNotSupportedError)r r9 r r r �is_pro_license_presentt s z.UAAutoAttachAWSInstance.is_pro_license_present)�__name__�
__module__�__qualname__r) r r �propertyr Zretryr r �strr r r
r r0 �boolr7 r8 r: r r r r r s
r )r! �typingr r Zurllib.errorr Zuaclientr r r Zuaclient.cloudsr ZIMDS_IPV4_ADDRESSZIMDS_IPV6_ADDRESSr r+ r r2 r6 r4 r- r* r, r r r r r �<module> s