Ë
    x[hÓ  ã            	       óü  — d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZ d dlZd dlmZmZ d dlmZ d dlmZ  ej2                  e«      Z	 d(d	ee   d
ededefd„Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z" G d„ de«      Z# G d„ de«      Z$ G d„ de«      Z% G d„ de«      Z& G d„ de«      Z' G d „ d!e«      Z( G d"„ d#e«      Z) G d$„ d%e«      Z* G d&„ d'e«      Z+y))é    N)ÚdatetimeÚtimezone)ÚStringIO)ÚAnyÚDictÚListÚOptionalÚTuple)ÚElementTree)ÚsubpÚversion)Úidentity)ÚUrlErrorÚdataÚ	delimiterÚ	quotecharÚreturnc                 óê   — t        «       5 }t        j                  |||t        j                  ¬«      j	                  | «       |j                  «       j                  «       cddd«       S # 1 sw Y   yxY w)zEncode report data with csv.)r   r   ÚquotingN)r   ÚcsvÚwriterÚQUOTE_MINIMALÚwriterowÚgetvalueÚrstrip)r   r   r   Úios       ú@/usr/lib/python3/dist-packages/cloudinit/sources/azure/errors.pyÚencode_reportr      s]   € ô 
‹ð 	&�rÜ�
‰
ØØØÜ×%Ñ%ô		
÷
 ‰(�4Œ.ð �{‰{‹}×#Ñ#Ó%÷	&÷ 	&ò 	&ús   ‹AA)Á)A2c                   óZ   — e Zd Zddœdedeeeef      ddfd„Zdefd„Zde	fd„Z
defd	„Zy)
ÚReportableErrorN)Úsupporting_dataÚreasonr!   r   c                ó>  — dt        j                  «       › �| _        d| _        || _        |r|| _        ni | _        t        j                  t        j                  «      | _
        	 t        j                  «       | _        y # t        $ r}d|›�| _        Y d }~y d }~ww xY w)NzCloud-Init/z%https://aka.ms/linuxprovisioningerrorzfailed to read vm id: )r   Úversion_stringÚagentÚdocumentation_urlr"   r!   r   Únowr   ÚutcÚ	timestampr   Úquery_vm_idÚvm_idÚ	Exception)Úselfr"   r!   Úid_errors       r   Ú__init__zReportableError.__init__(   s‡   € ð #¤7×#9Ñ#9Ó#;Ð"<Ð=ˆŒ
Ø!HˆÔØˆŒáØ#2ˆDÕ à#%ˆDÔ ä!Ÿ™¤h§l¡lÓ3ˆŒð	?Ü!×-Ñ-Ó/ˆD�JøÜò 	?Ø1°(°Ð>ˆD�J‰Jûð	?ús   Á%A? Á?	BÂ
BÂBc                 óF  — dd| j                   › �d| j                  › �g}|| j                  j                  «       D ��cg c]  \  }}|› d|› �‘Œ c}}z  }|d| j                  › �d| j
                  j                  «       › �d| j                  › �gz  }t        |«      S c c}}w )Nzresult=errorzreason=zagent=ú=zvm_id=z
timestamp=zdocumentation_url=)	r"   r%   r!   Úitemsr+   r)   Ú	isoformatr&   r   )r-   r   ÚkÚvs       r   Úas_encoded_reportz!ReportableError.as_encoded_report>   s·   € ð Ø�d—k‘k�]Ð#Ø�T—Z‘Z�LÐ!ð
ˆð
 	¨×(<Ñ(<×(BÑ(BÓ(D×E¡  1�A�3�a˜�s’ÓEÑEˆØØ�T—Z‘Z�LÐ!Ø˜Ÿ™×1Ñ1Ó3Ð4Ð5Ø  ×!7Ñ!7Ð 8Ð9ð
ñ 	
ˆô ˜TÓ"Ð"ùó Fs   ¾Bc                 óÄ   — t        |t        «      xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S )N)Ú
isinstancer    r)   r"   r!   )r-   Úothers     r   Ú__eq__zReportableError.__eq__O   sV   € ä�uœoÓ.ò >Ø—‘ %§/¡/Ñ1ò>à—‘˜uŸ|™|Ñ+ò>ð ×$Ñ$¨×(=Ñ(=Ñ=ð		
ó    c                 ó‚   — | j                   j                  › d| j                  › d| j                  › d| j                  › d�S )Nz(reason=z, timestamp=z, supporting_data=ú))Ú	__class__Ú__name__r"   r)   r!   )r-   s    r   Ú__repr__zReportableError.__repr__W   sL   € à�~‰~×&Ñ&Ð'ð (Ø—k‘k�]ð #ØŸ™Ð(ð )Ø#×3Ñ3Ð4°Að7ð	
r;   )r?   Ú
__module__Ú__qualname__Ústrr	   r   r   r/   r6   Úboolr:   r@   © r;   r   r    r    '   sZ   „ ð
 59ò	?àð?ð " $ s¨C x¡.Ñ1ð	?ð
 
ó?ð,#à	ó#ð"
˜tó 
ð
˜#ô 
r;   r    c                   ó(   ‡ — e Zd Zdeddfˆ fd„Zˆ xZS )Ú$ReportableErrorDhcpInterfaceNotFoundÚdurationr   Nc                 óB   •— t         ‰| �  d«       || j                  d<   y )Nzfailure to find DHCP interfacerH   ©Úsuperr/   r!   )r-   rH   r>   s     €r   r/   z-ReportableErrorDhcpInterfaceNotFound.__init__a   s!   ø€ Ü‰ÑÐ9Ô:à+3ˆ×Ñ˜ZÒ(r;   )r?   rA   rB   Úfloatr/   Ú__classcell__©r>   s   @r   rG   rG   `   s   ø„ ð4 ð 4¨4÷ 4ñ 4r;   rG   c                   ó2   ‡ — e Zd Zdedee   ddfˆ fd„Zˆ xZS )ÚReportableErrorDhcpLeaserH   Ú	interfacer   Nc                 ó`   •— t         ‰| �  d«       || j                  d<   || j                  d<   y )Nzfailure to obtain DHCP leaserH   rQ   rJ   )r-   rH   rQ   r>   s      €r   r/   z!ReportableErrorDhcpLease.__init__h   s1   ø€ Ü‰ÑÐ7Ô8à+3ˆ×Ñ˜ZÑ(Ø,5ˆ×Ñ˜[Ò)r;   )r?   rA   rB   rL   r	   rC   r/   rM   rN   s   @r   rP   rP   g   s&   ø„ ð6 ð 6°8¸C±=ð 6ÀT÷ 6ñ 6r;   rP   c                   ój   ‡ — e Zd Zdee   dee   dee   deeeeef         deeef   ddfˆ fd„Z	ˆ xZ
S )	Ú(ReportableErrorDhcpOnNonPrimaryInterfacerQ   ÚdriverÚrouterÚstatic_routesÚleaser   Nc                óº   •— t         ‰| �  d«       || j                  d<   || j                  d<   || j                  d<   || j                  d<   || j                  d<   y )Nz&failure to find primary DHCP interfacerQ   rU   rV   rW   rX   rJ   )r-   rQ   rU   rV   rW   rX   r>   s         €r   r/   z1ReportableErrorDhcpOnNonPrimaryInterface.__init__p   sc   ø€ ô 	‰ÑÐAÔBà,5ˆ×Ñ˜[Ñ)Ø)/ˆ×Ñ˜XÑ&Ø)/ˆ×Ñ˜XÑ&Ø0=ˆ×Ñ˜_Ñ-Ø(-ˆ×Ñ˜WÒ%r;   )r?   rA   rB   r	   rC   r   r
   r   r   r/   rM   rN   s   @r   rT   rT   o   so   ø„ ð.ð ˜C‘=ð.ð ˜‘ð	.ð
 ˜‘ð.ð    U¨3°¨8¡_Ñ 5Ñ6ð.ð �C˜�H‰~ð.ð 
÷.ñ .r;   rT   c                   ó,   ‡ — e Zd Zdededdfˆ fd„Zˆ xZS )ÚReportableErrorImdsUrlErrorÚ	exceptionrH   r   Nc                ó  •— t        |j                  t        j                  «      rd}nmt        |j                  t        j                  «      rd}nFt        |j                  t        j
                  «      rd}n|j                  rd|j                  › d�}nd}t        ‰| �!  |«       |j                  r|j                  | j                  d<   || j                  d<   t        |«      | j                  d	<   |j                  | j                  d
<   y )Nz connection timeout querying IMDSzconnection error querying IMDSzread timeout querying IMDSzhttp error z querying IMDSzunexpected error querying IMDSÚ	http_coderH   r\   Úurl)r8   ÚcauseÚrequestsÚConnectTimeoutÚConnectionErrorÚReadTimeoutÚcoderK   r/   r!   Úreprr_   )r-   r\   rH   r"   r>   s       €r   r/   z$ReportableErrorImdsUrlError.__init__ƒ   sÍ   ø€ ä�i—o‘o¤x×'>Ñ'>Ô?Ø7‰FÜ˜	Ÿ™¬×)AÑ)AÔBØ5‰FÜ˜	Ÿ™¬×)=Ñ)=Ô>Ø1‰FØ�^Š^Ø" 9§>¡>Ð"2°.ÐA‰Fà5ˆFä‰Ñ˜Ô à�>Š>Ø09·±ˆD× Ñ  Ñ-à+3ˆ×Ñ˜ZÑ(Ü,0°«Oˆ×Ñ˜[Ñ)Ø&/§m¡mˆ×Ñ˜UÒ#r;   )r?   rA   rB   r   rL   r/   rM   rN   s   @r   r[   r[   ‚   s"   ø„ ð4 Xð 4¸ð 4À4÷ 4ñ 4r;   r[   c                   ó,   ‡ — e Zd Zdededdfˆ fd„Zˆ xZS )Ú"ReportableErrorImdsInvalidMetadataÚkeyÚvaluer   Nc                óx   •— t         ‰| �  d|› �«       || j                  d<   t        |«      | j                  d<   y )Nzinvalid IMDS metadata for key=ri   rj   )rK   r/   r!   rf   )r-   ri   rj   r>   s      €r   r/   z+ReportableErrorImdsInvalidMetadata.__init__›   s<   ø€ Ü‰ÑÐ9¸#¸Ð?Ô@à&)ˆ×Ñ˜UÑ#Ü(,¨U«ˆ×Ñ˜WÒ%r;   )r?   rA   rB   rC   r   r/   rM   rN   s   @r   rh   rh   š   s"   ø„ ð4˜sð 4¨3ð 4°4÷ 4ñ 4r;   rh   c                   ó(   ‡ — e Zd Zdeddfˆ fd„Zˆ xZS )Ú+ReportableErrorImdsMetadataParsingExceptionr\   r   Nc                óT   •— t         ‰| �  d«       t        |«      | j                  d<   y )Nzerror parsing IMDS metadatar\   )rK   r/   rf   r!   ©r-   r\   r>   s     €r   r/   z4ReportableErrorImdsMetadataParsingException.__init__£   s%   ø€ Ü‰ÑÐ6Ô7ä,0°«Oˆ×Ñ˜[Ò)r;   )r?   rA   rB   Ú
ValueErrorr/   rM   rN   s   @r   rm   rm   ¢   s   ø„ ð< Zð <°D÷ <ñ <r;   rm   c                   ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚReportableErrorOsDiskPpsFailurec                 ó$   •— t         ‰| �  d«       y )Nzerror waiting for host shutdown©rK   r/   ©r-   r>   s    €r   r/   z(ReportableErrorOsDiskPpsFailure.__init__ª   s   ø€ Ü‰ÑÐ:Õ;r;   ©r   N©r?   rA   rB   r/   rM   rN   s   @r   rr   rr   ©   s   ø„ ÷<ñ <r;   rr   c                   ó(   ‡ — e Zd Zdeddfˆ fd„Zˆ xZS )Ú!ReportableErrorOvfInvalidMetadataÚmessager   Nc                 ó*   •— t         ‰| �  d|› �«       y )Nz)unexpected metadata parsing ovf-env.xml: rt   )r-   rz   r>   s     €r   r/   z*ReportableErrorOvfInvalidMetadata.__init__¯   s   ø€ Ü‰ÑÐDÀWÀIÐNÕOr;   )r?   rA   rB   rC   r/   rM   rN   s   @r   ry   ry   ®   s   ø„ ðP ð P¨÷ Pñ Pr;   ry   c                   ó<   ‡ — e Zd Zdej                  ddfˆ fd„Zˆ xZS )Ú"ReportableErrorOvfParsingExceptionr\   r   Nc                óB   •— |j                   }t        ‰| �	  d|› �«       y )Nzerror parsing ovf-env.xml: )ÚmsgrK   r/   )r-   r\   rz   r>   s      €r   r/   z+ReportableErrorOvfParsingException.__init__´   s!   ø€ Ø—-‘-ˆÜ‰ÑÐ6°w°iÐ@ÕAr;   )r?   rA   rB   ÚETÚ
ParseErrorr/   rM   rN   s   @r   r}   r}   ³   s#   ø„ ðB R§]¡]ð B°t÷ Bñ Br;   r}   c                   ó(   ‡ — e Zd Zdeddfˆ fd„Zˆ xZS )Ú!ReportableErrorUnhandledExceptionr\   r   Nc                 óJ  •— t         ‰| �  d«       dj                  t        j                  t        |«      ||j                  «      «      }t        j                  |j                  d«      «      j                  d«      }t        |«      | j                  d<   || j                  d<   y )Nzunhandled exceptionÚ zutf-8r\   Útraceback_base64)rK   r/   ÚjoinÚ	tracebackÚformat_exceptionÚtypeÚ__traceback__Úbase64Ú	b64encodeÚencodeÚdecoderf   r!   )r-   r\   ÚtraceÚtrace_base64r>   s       €r   r/   z*ReportableErrorUnhandledException.__init__º   s‰   ø€ Ü‰ÑÐ.Ô/à—‘Ü×&Ñ&Ü�Y“ ¨I×,CÑ,Cóó
ˆô
 ×'Ñ'¨¯©°WÓ(=Ó>×EÑEÀgÓNˆä,0°«Oˆ×Ñ˜[Ñ)Ø3?ˆ×ÑÐ/Ò0r;   )r?   rA   rB   r,   r/   rM   rN   s   @r   rƒ   rƒ   ¹   s   ø„ ð@ )ð @°÷ @ñ @r;   rƒ   c                   ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )Ú!ReportableErrorProxyAgentNotFoundc                 ó$   •— t         ‰| �  d«       y )Nzazure-proxy-agent not foundrt   ru   s    €r   r/   z*ReportableErrorProxyAgentNotFound.__init__É   s   ø€ Ü‰ÑÐ6Õ7r;   rv   rw   rN   s   @r   r“   r“   È   s   ø„ ÷8ñ 8r;   r“   c                   ó<   ‡ — e Zd Zdej                  ddfˆ fd„Zˆ xZS )Ú&ReportableErrorProxyAgentStatusFailurer\   r   Nc                 óº   •— t         ‰| �  d«       |j                  | j                  d<   |j                  | j                  d<   |j
                  | j                  d<   y )Nz azure-proxy-agent status failureÚ	exit_codeÚstdoutÚstderr)rK   r/   r˜   r!   r™   rš   ro   s     €r   r/   z/ReportableErrorProxyAgentStatusFailure.__init__Î   sS   ø€ Ü‰ÑÐ;Ô<à,5×,?Ñ,?ˆ×Ñ˜[Ñ)Ø)2×)9Ñ)9ˆ×Ñ˜XÑ&Ø)2×)9Ñ)9ˆ×Ñ˜XÒ&r;   )r?   rA   rB   r   ÚProcessExecutionErrorr/   rM   rN   s   @r   r–   r–   Í   s!   ø„ ð: $×"<Ñ"<ð :À÷ :ñ :r;   r–   )ú|ú'),rŒ   r   Úloggingrˆ   r   r   r   r   Útypingr   r   r   r	   r
   Ú	xml.etreer   r€   ra   Ú	cloudinitr   r   Úcloudinit.sources.azurer   Úcloudinit.url_helperr   Ú	getLoggerr?   ÚLOGrC   r   r,   r    rG   rP   rT   r[   rh   rm   rr   ry   r}   rƒ   r“   r–   rE   r;   r   ú<module>r¦      s  ðó
 Û 
Û Û ß 'Ý ß 3Õ 3Ý 'ã ç #Ý ,Ý )à€g×Ñ˜Ó!€ð =@ñ&Ø
ˆs‰)ð&Ø #ð&Ø69ð&àó&ô 6
�iô 6
ôr4¨?ô 4ô6˜ô 6ô.¨ô .ô&4 /ô 4ô04¨ô 4ô<°/ô <ô< oô <ô
P¨ô Pô
B¨ô Bô@¨ô @ô8¨ô 8ô
:¨_õ :r;   