Your IP : 216.73.217.13


Current Path : /usr/lib/python3/dist-packages/uaclient/clouds/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/uaclient/clouds/__pycache__/aws.cpython-38.pyc

U

8�-d��@s�ddlZddlmZmZddlmZddlmZmZm	Z	ddl
mZdZdZ
ee
fZdZd	Zd
ZdZdZd
ZdZedZGdd�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�eZdZdZdZdd�Zeeje	dddgd�e
eefd�dd	���Z
d
d�Zeje	ddd
gd�dd��Zeed�dd��Zeed�dd��Zed�dd�Zeed�dd�ZdS)�UAAutoAttachAWSInstanceNcCs |��}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_responses
�z.UAAutoAttachAWSInstance._get_imds_url_responseg�?r
)Zretry_sleeps)�returncCs|��\}}d|iS)NZpkcs7)r)r�response�_headersrrr�identity_doc%sz$UAAutoAttachAWSInstance.identity_doccCs�tD]�}z|j|d�}Wnftk
r>}z|�W5d}~XYqtk
r~}z$dj|t|dd�d�}t�|�W5d}~XYqX||_q�q|jdkr�t	�
dd�t���|S)N)�
ip_addressz8Could not reach AWS IMDS at http://{endpoint}: {reason}
�reason�)Zendpointrz6No valid AWS IMDS endpoint discovered at addresses: %sz, )�IMDS_IP_ADDRESS�_get_imds_v2_token_headersr�	Exceptionr�getattr�logging�debugrrZUserFacingError�join)rZaddressr�e�msgrrrr
+s*
��
��z6UAAutoAttachAWSInstance._request_imds_v2_token_headers��c
Cs�|jdkrdS|jrt|jiSz$tjt�|�dttidd�\}}Wn>tk
r�}z |j	dkrnd|_WY�
dS�W5d}~XYnX||_t|jiS)NZIMDSv1ZPUTr
)�methodrri�)
�
_api_token�AWS_TOKEN_PUT_HEADERrr�IMDS_V2_TOKEN_URLr�AWS_TOKEN_REQ_HEADER�AWS_TOKEN_TTL_SECONDSr�code)rrrrr$rrrrCs$

�

z2UAAutoAttachAWSInstance._get_imds_v2_token_headerscCsdS)NZawsr�rrrr�
cloud_typeZsz"UAAutoAttachAWSInstance.cloud_typecCs�z$t�t�}d|dd�kr"WdSWntk
r8YnXt�t���}t�t���}d|dd�krz|dd�kr�nndSdS)z$This machine is a viable AWSInstanceZec2r�TF)rZ	load_file�SYS_HYPERVISOR_PRODUCT_UUID�FileNotFoundError�DMI_PRODUCT_UUID�lower�DMI_PRODUCT_SERIAL)rZhypervisor_uuidZdmi_uuidZ
dmi_serialrrr�	is_viable^s

(z!UAAutoAttachAWSInstance.is_viablecCsdS)ZUnsupportedFrr/rrr�should_poll_for_pro_licensepsz3UAAutoAttachAWSInstance.should_poll_for_pro_license)�wait_for_changercCst���dS)N)rZInPlaceUpgradeNotSupportedError)rr9rrr�is_pro_license_presenttsz.UAAutoAttachAWSInstance.is_pro_license_present)�__name__�
__module__�__qualname__r)rr�propertyrZretryrr�strrrr
rr0�boolr7r8r:rrrrr	s
r	)r!�typingrrZurllib.errorrZuaclientrrrZuaclient.cloudsrZIMDS_IPV4_ADDRESSZIMDS_IPV6_ADDRESSrr+rr2r6r4r-r*r,r	rrrr�<module>s