+
    ˜qgjÐ  ã                   óì   € ^ RI t ^ RIt^ RIHt ^ RIHtHtHtHt ^ RI	t	^ RI
Ht ^ RIHt ^ RIHtHt ] P"                  ! ]4      tRtR t ! R	 R
4      tRRR^/R R lltR R ltRR R lltR R ltR# )é    N)Ú	monotonic)ÚDictÚOptionalÚTypeÚUnion)Úutil)Úreport_diagnostic_event)ÚUrlErrorÚreadurlzhttp://169.254.169.254/metadatac                 óF   € R RR\        \        P                  ! 4       4      /# )ÚMetadataÚtruezx-ms-client-request-id)ÚstrÚuuidÚuuid4)Ú_urls   &Ú>/usr/lib/python3/dist-packages/cloudinit/sources/azure/imds.pyÚ
headers_cbr      s!   € à�FØ ¤#¤d§j¢j£lÓ"3ðð ó    c                   ó\   a € ] tR t^t o RtRRRRRRRR/V 3R lR	 lltV 3R
 lR ltRtV tR# )ÚReadUrlRetryHandlera7  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.
Úlogging_backoffç      ð?Úmax_connection_errorsNÚretry_codesÚretry_deadlinec                óP   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[ ,          RR/# )é   r   r   r   ÚreturnN)Úfloatr   Úint)ÚformatÚ__classdict__s   "€r   Ú__annotate__Ú ReadUrlRetryHandler.__annotate__%   s=   ø€ ÷ 8ñ 8ñ ð8ñ  (©�}ð	8ñ !¡�ð8ð 
ñ8r   c               ó`   € Wn         W n        W0n        W@n        R V n        ^ V n        RV n        R# )r   N)r   r   r   r   Ú_logging_thresholdÚ_request_countÚ_last_error)Úselfr   r   r   r   s   &$$$$r   Ú__init__ÚReadUrlRetryHandler.__init__%   s4   € ð  /ÔØ%:Ô"Ø&ÔØ,ÔØ"%ˆÔØˆÔØ37ˆÖr   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   )Úbool)r"   r#   s   "€r   r$   r%   :   s   ø€ ÷ >ñ >©tñ >r   c                ó€  € V ;P                   ^,          un         \        V\        4      '       g%   \        RV,          \        P
                  R7       R# RpV P                  e   \        4       V P                  8¼  d   RpMRpV P                  eX   \        VP                  \        P                  4      '       d.   V ;P                  ^,          un        V P                  ^ 8:  d   RpM+VP                  e   VP                  V P                  9  d   RpV P                   V P                  8¼  d%   V ;P                  V P                  ,          un        MRpVP                  e0   V P                   VP                  8w  d   RpVP                  V n        MpV P                   eG   \        V P                   \"        4      '       d'   \        VP                  V P                   4      '       g   Rp\#        VP                  4      V n        V'       g	   V'       g/   \        RV P                   V3,          \        P
                  R7       V# )é   z1Polling IMDS failed with unexpected exception: %r©Úlogger_funcFTz1Polling 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Úretrys   &&  r   Úexception_callbackÚ&ReadUrlRetryHandler.exception_callback:   sº  € Ø×Ò˜qÕ ÕÜ˜)¤X×.Ò.Ü#ØCØõäŸK™Kõñ
 àˆà×ÑÒ+Ü“˜t×2Ñ2Ô2à‰EàˆEð
 ×%Ñ%Ò1´jØ�O‰OœX×5Ñ5÷7
ò 7
ð ×&Ò&¨!Õ+Õ&Ø×)Ñ)¨QÔ.Ø�øà�N‰NÒ&Ø—‘ d×&6Ñ&6Ô6àˆEà×Ñ $×"9Ñ"9Ô9Ø×#Ò# t×';Ñ';Õ;Ö#àˆCð �>‰>Ò%à×Ñ 9§>¡>Ô1Ø�Ø#,§>¡>�Ô øð ×ÑÒ$ä˜d×.Ñ.´×5Ò5ä˜iŸo™o¨t×/?Ñ/?×@Ò@àˆCÜ# I§O¡OÓ4ˆDÔç—eÜ#ØCØ×&Ñ&¨	Ð2õ3äŸK™Kõð
 ˆr   )r)   r'   r(   r   r   r   r   )i”  iš  i­  iô  )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r+   r?   Ú__static_attributes__Ú__classdictcell__)r#   s   @r   r   r      sF   ø‡ € ñð8ð "%ð8ð 04ð	8ð

ð8ð +/÷8ò 8÷*>ö >r   r   Úlog_responseTÚtimeoutc          
      óT   € V ^8„  d   QhR\         R\        R\        R\        R\        /# )r   ÚurlÚretry_handlerrH   rI   r   )r   r   r/   r!   Úbytes)r"   s   "r   r$   r$   {   s<   € ÷  ñ  Ü	ð ô 'ð ô ð	 ô
 ð ô ñ r   c          	     óÆ   €  \        V VP                  \        RVVR7      pVP                  #   \         d)   p\	        RT,          \
        P                  R7       h Rp?ii ; i)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_resprI   z&Failed to fetch metadata from IMDS: %sr2   N)r   r?   r   r
   r	   r5   r6   Úcontents)rK   rL   rH   rI   ÚresponseÚerrors   &$$$  r   Ú
_fetch_urlrV   {   se   € ð ÜØØ&×9Ñ9Ü!ØØ%Øô
ˆð ×ÑÐøô ô ÜØ4°uÕ<ÜŸ™õ	
ð 	ûðús   ‚- ­A ¸#AÁA c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   rK   rL   r   )r   r   r   )r"   s   "r   r$   r$   ž   s(   € ÷ ñ Ü	ðô 'ðô 
ñ	r   c               óÒ   € \        WR7      p \        P                  ! VP                  R4      4      #   \         d)   p\        RT,          \        P                  R7       h Rp?ii ; i)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.
©rL   zutf-8z&Failed to parse metadata from IMDS: %sr2   N)rV   r   Ú	load_jsonÚdecodeÚ
ValueErrorr	   r5   r6   )rK   rL   ÚmetadatarU   s   &$  r   Ú_fetch_metadatar^   ž   sW   € ô ˜#Ô;€HðÜ�~Š~˜hŸo™o¨gÓ6Ó7Ð7øÜô ÜØ4°uÕ<ÜŸ™õ	
ð 	ûðús   Ž$3 ³A&¾#A!Á!A&c                óR   € V ^8„  d   QhR\         R\        \        ,          R\        /# )r   r   r   r   )r    r   r!   r   )r"   s   "r   r$   r$   ·   s(   € ÷ ñ ÜðÜ2:¼3µ-ðä	ñr   c                ó&  € \        VV R7      p \        R,           p\        W2R7      #   \         d^   pTP                  R8X  dG   \        R\        P                  R7       \        TT R7      p\        R,           p\        Y2R7      u Rp?# h Rp?ii ; i)	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=truerY   i�  z,Falling back to IMDS api-version: 2019-06-01r2   z /instance?api-version=2019-06-01N)r   ÚIMDS_URLr^   r
   r:   r	   r5   r6   )r   r   rL   rK   rU   s   &&   r   Ú fetch_metadata_with_api_fallbackrb   ·   sŠ   € ô (Ø3Ø%ô€MðÜÐIÕIˆÜ˜sÔ@Ð@øÜô Ø�:‰:˜ÔÜ#Ø>ÜŸK™Kõô 0Ø&;Ø-ôˆMô Ð?Õ?ˆCÜ" 3ÔDÕDØûðús!   �( ¨B³ABÂBÂ
BÂBc                ó$   € V ^8„  d   QhR\         /# r.   )rM   )r"   s   "r   r$   r$   ×   s   € ÷ ñ ¤ñ r   c            	     óî   € \         R,           p \        R^RR7      p\        V VP                  \        RR^R7      p\        RVP                  ^,            R	2\        P                  R
7       VP                  # )z`Fetch extended metadata, falling back to non-extended as required.

:raises UrlError: on error.
z'/reprovisiondata?api-version=2019-06-01g       @N)r   r   r   TFrO   zPolled IMDS z time(s)r2   )
ra   r   r   r?   r   r	   r(   r5   ÚdebugrS   )rK   ÚhandlerrT   s      r   Úfetch_reprovision_datarg   ×   s}   € ô
 Ð>Õ
>€Cä!ØØØô€Gô
 ØØ×/Ñ/ÜØØØô€Hô Ø
�w×-Ñ-¨aÕ/Ð0°Ð9Ü—I‘Iõð ×ÑÐr   )N)Úloggingr   Útimer   Útypingr   r   r   r   r8   Ú	cloudinitr   Úcloudinit.sources.helpers.azurer	   Úcloudinit.url_helperr
   r   Ú	getLoggerrA   r5   ra   r   r   rV   r^   rb   rg   © r   r   Ú<module>rp      ss   ðó
 Û Ý ß .Ó .ã å Ý Cß 2à×Ò˜Ó!€à,€ò÷\ñ \ð~ ð ð	 ð
 ÷ õF÷2÷@r   