
    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#2D #%D !hll3	?!--/DJ 	?1(>DJJ	?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     dkk]#TZZL!

 	(<(<(B(B(DE1A3asEETZZL!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    uo. >%//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    ~~&&' (kk] #( )#334A7	
r;   )r?   
__module____qualname__strr	   r   r   r/   r6   boolr:   r@    r;   r   r    r    '   sZ    
 59	?? "$sCx.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 44 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 68C= 6T 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=. 	.
 .  U3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    ioox'>'>?7F	)A)AB5F	)=)=>1F^^"9>>"2.AF5F >>09D  -+3Z(,0O[)&/mmU#r;   )r?   rA   rB   r   rL   r/   rM   rN   s   @r   r[   r[      s"    4X 4 44 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"    4s 43 44 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    DWI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!    --6wi@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Eg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/ 404 4</ <<o <
P P
B B@ @8 8
:_ :r;   