Ë
    |f  ã                   óÐ   — d dl Z d dlmZmZ d dlmZmZmZmZ d dl	m
Z
 dZdZeefZdZdZd	Zd
ZdZdZdZedz   Z e j,                   ej.                  e«      «      Z G d„ de
«      Zy)é    N)ÚAnyÚDict)Ú
exceptionsÚhttpÚsystemÚutil)ÚAutoAttachCloudInstancez169.254.169.254z[fd00:ec2::254]zhttp://{}/latest/api/tokenz0http://{}/latest/dynamic/instance-identity/pkcs7z/sys/hypervisor/uuidz /sys/class/dmi/id/product_serialz/sys/class/dmi/id/product_uuidÚ21600zX-aws-ec2-metadata-tokenz-ttl-secondsc                   ó  — e Zd ZdZdZd„ Ze ej                  e	j                  g d¢¬«      deeef   fd„«       «       Zd„ Z ej                  e	j                  g d¢¬«      d	„ «       Zedefd
„«       Zedefd„«       Zdefd„Zdedefd„Zy)ÚUAAutoAttachAWSInstanceNc                 ó  — | j                  «       }t        j                  t        j	                  | j
                  «      |d¬«      }|j                  dk(  r|j                  S t        j                  |j                  |j                  ¬«      ‚)Né   )ÚheadersÚtimeoutéÈ   ©ÚcodeÚbody)
Ú_request_imds_v2_token_headersr   ÚreadurlÚIMDS_URLÚformatÚ_ip_addressr   r   r   ÚCloudMetadataError)Úselfr   Úresponses      ú5/usr/lib/python3/dist-packages/uaclient/clouds/aws.pyÚ_get_imds_url_responsez.UAAutoAttachAWSInstance._get_imds_url_response   sl   € Ø×5Ñ5Ó7ˆÜ—<‘<ÜO‰O˜D×,Ñ,Ó-°wÈô
ˆð =‰=˜CÒØ—=‘=Ð ä×/Ñ/Ø—]‘]¨¯©ôð ó    )g      à?r   r   )Úretry_sleepsÚreturnc                 ó&   — d| j                  «       iS )NÚpkcs7)r   ©r   s    r   Úidentity_docz$UAAutoAttachAWSInstance.identity_doc+   s   € ð ˜×4Ñ4Ó6Ð7Ð7r   c                 ó,  — t         D ]  }	 | j                  |¬«      }|| _         n | j                  €)t        j                  dj                  t         «      ¬«      ‚S # t        $ r,}t        j                  d|t        |dd«      «       Y d }~Œ‡d }~ww xY w)N)Ú
ip_addressz*Could not reach AWS IMDS at http://%s: %s
ÚreasonÚ z, )Ú	addresses)
ÚIMDS_IP_ADDRESSÚ_get_imds_v2_token_headersr   Ú	ExceptionÚLOGÚwarningÚgetattrr   ÚAWSNoValidIMDSÚjoin)r   Úaddressr   Úes       r   r   z6UAAutoAttachAWSInstance._request_imds_v2_token_headers0   sŸ   € Ü&ò 	ˆGð
Ø×9Ñ9ÀWÐ9ÓMð $+Ô Ùð	ð ×ÑÐ#Ü×+Ñ+ØŸ)™)¤OÓ4ôð ð ˆøô ò Ü—‘ØAØÜ˜A˜x¨Ó,÷ñ ûðús   ‹AÁ	BÁ'"BÂB)r   é   é   c                 ó²  — | j                   dk(  ry | j                   rt        | j                   iS t        j                  t        j                  |«      dt        t        id¬«      }|j                  dk(  r#|j                  | _         t        | j                   iS |j                  dk(  rd| _         y t        j                  |j                  |j                  ¬«      ‚)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'   r   s      r   r,   z2UAAutoAttachAWSInstance._get_imds_v2_token_headersC   s°   € à?‰?˜hÒ&ØØ_Š_Ü(¨$¯/©/Ð:Ð:ä—<‘<Ü×$Ñ$ ZÓ0ØÜ)Ô+@ÐAØô	
ˆð =‰=˜CÒØ&Ÿm™mˆDŒOÜ(¨$¯/©/Ð:Ð:Ø=‰=˜CÒØ&ˆDŒOØä×+Ñ+Ø—‘ X§]¡]ô
ð 	
r   c                  ó   — y)NÚaws© r$   s    r   Ú
cloud_typez"UAAutoAttachAWSInstance.cloud_type[   ó   € àr   c                 ó.  — 	 t        j                  t        «      }d|dd k(  ry	 t        j                  t        «      j                  «       }t        j                  t        «      j                  «       }d|dd cxk(  r|dd k(  ry yy# t        $ r Y Œnw xY w)z$This machine is a viable AWSInstanceÚec2r   é   TF)r   Ú	load_fileÚSYS_HYPERVISOR_PRODUCT_UUIDÚFileNotFoundErrorÚDMI_PRODUCT_UUIDÚlowerÚDMI_PRODUCT_SERIAL)r   Úhypervisor_uuidÚdmi_uuidÚ
dmi_serials       r   Ú	is_viablez!UAAutoAttachAWSInstance.is_viable_   sŸ   € ð	Ü$×.Ñ.Ô/JÓKˆOØ˜¨¨!Ð,Ò,Øð -ô ×#Ñ#Ô$4Ó5×;Ñ;Ó=ˆÜ×%Ñ%Ô&8Ó9×?Ñ?ÓAˆ
ØH˜Q˜qMÔ4 Z°°! _Ò4Øð 5áøô !ò 	ñ ð	ús   ‚!B Â	BÂBc                  ó   — y)ÚUnsupportedFrB   r$   s    r   Úshould_poll_for_pro_licensez3UAAutoAttachAWSInstance.should_poll_for_pro_licenseq   rD   r   Úwait_for_changec                ó*   — t        j                  «       ‚)N)r   ÚInPlaceUpgradeNotSupportedError)r   rU   s     r   Úis_pro_license_presentz.UAAutoAttachAWSInstance.is_pro_license_presentu   s   € Ü×8Ñ8Ó:Ð:r   )Ú__name__Ú
__module__Ú__qualname__r;   r   r   Úpropertyr   Úretryr   r   r   Ústrr   r%   r   r,   rC   ÚboolrQ   rT   rX   rB   r   r   r   r      sÒ   „ Ø€JØ€Kò
ð Ø€T‡ZZ
×-Ñ-ºKÔHð8˜d 3¨ 8™nò 8ó Ió ð8òð& €T‡ZZ
×-Ñ-ºIÔFñ
ó Gð
ð. ð˜Cò ó ðð ð˜4ò ó ðð"¨Tó ð;¸ð ;À$ô ;r   r   )ÚloggingÚtypingr   r   Úuaclientr   r   r   r   Úuaclient.cloudsr	   ÚIMDS_IPV4_ADDRESSÚIMDS_IPV6_ADDRESSr+   r=   r   rI   rM   rK   r?   r<   r>   Ú	getLoggerÚreplace_top_level_logger_namerY   r.   r   rB   r   r   ú<module>rh      sŽ   ðÛ ß ç 3Ó 3Ý 3à%Ð Ø%Ð à$Ð&7Ð8€Ø0Ð Ø=€à4Ð Ø7Ð Ø3Ð àÐ Ø1Ð Ø+¨nÑ<Ð à€g×ÑÐ:˜×:Ñ:¸8ÓDÓE€ô];Ð5õ ];r   