
    x[h              	           S SK r S SKrS SKrS SKrS SKJrJr  S SKJr  S SKJ	r	J
r
JrJrJr  S SKJr  S SKrS SKJrJr  S SKJr  S SKJr  \R2                  " \5      r S(S	\\   S
\S\S\4S jjr " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r% " S S\5      r& " S S\5      r' " S  S!\5      r( " S" S#\5      r) " S$ S%\5      r* " S& S'\5      r+g))    N)datetimetimezone)StringIO)AnyDictListOptionalTuple)ElementTree)subpversion)identity)UrlErrordata	delimiter	quotecharreturnc                     [        5        n[        R                  " UUU[        R                  S9R	                  U 5        UR                  5       R                  5       sSSS5        $ ! , (       d  f       g= f)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      sR     
r

%%		

 (4. {{}##% 
s   AA''
A5c                   l    \ rS rSrSS.S\S\\\\4      SS4S jjrS\4S jr	S\
4S	 jrS\4S
 jrSrg)ReportableError'   N)supporting_datareasonr"   r   c                N   S[         R                  " 5        3U l        SU l        Xl        U(       a  X l        O0 U l        [        R                  " [        R                  5      U l
         [        R                  " 5       U l        g ! [         a  nSU< 3U l         S nAg S nAff = f)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__ReportableError.__init__(   s     #7#9#9#;"<=
!H#2 #%D !hll3	?!--/DJ 	?1(>DJJ	?s   *B 
B$BB$c                 H   SSU R                    3SU R                   3/nXR                  R                  5        VVs/ s H  u  p#U SU 3PM     snn-  nUSU R                   3SU R
                  R                  5        3SU R                   3/-  n[        U5      $ s  snnf )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_report!ReportableError.as_encoded_report>   s     dkk]#TZZL!

 	(<(<(B(B(DE(DA3as(DEETZZL!11345 !7!7 89
 	
 T"" Fs   Bc                     [        U[        5      =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ )N)
isinstancer    r*   r#   r"   )r.   others     r   __eq__ReportableError.__eq__O   sV    uo. >%//1>u||+> $$(=(==		
    c                     U R                   R                   SU R                   SU R                   SU R                   S3$ )Nz(reason=z, timestamp=z, supporting_data=))	__class____name__r#   r*   r"   )r.   s    r   __repr__ReportableError.__repr__W   sL    ~~&&' (kk] #( )#334A7	
r?   )r&   r'   r#   r"   r*   r,   )rC   
__module____qualname____firstlineno__strr	   r   r   r0   r8   boolr=   rD   __static_attributes__ r?   r   r    r    '   sZ    
 59	?? "$sCx.1	?
 
?,#	#"
t 

# 
r?   r    c                   4   ^  \ rS rSrS\SS4U 4S jjrSrU =r$ )$ReportableErrorDhcpInterfaceNotFound`   durationr   Nc                 @   > [         TU ]  S5        XR                  S'   g )Nzfailure to find DHCP interfacerP   superr0   r"   )r.   rP   rB   s     r   r0   -ReportableErrorDhcpInterfaceNotFound.__init__a   s    9:+3Z(r?   rL   )rC   rF   rG   rH   floatr0   rK   __classcell__rB   s   @r   rN   rN   `   s    4 44 4 4r?   rN   c                   >   ^  \ rS rSrS\S\\   SS4U 4S jjrSrU =r	$ )ReportableErrorDhcpLeaseg   rP   	interfacer   Nc                 \   > [         TU ]  S5        XR                  S'   X R                  S'   g )Nzfailure to obtain DHCP leaserP   r[   rR   )r.   rP   r[   rB   s      r   r0   !ReportableErrorDhcpLease.__init__h   s-    78+3Z(,5[)r?   rL   )
rC   rF   rG   rH   rU   r	   rI   r0   rK   rV   rW   s   @r   rY   rY   g   s&    6 68C= 6T 6 6r?   rY   c                   v   ^  \ rS rSrS\\   S\\   S\\   S\\\\\4         S\\\	4   SS4U 4S	 jjr
S
rU =r$ )(ReportableErrorDhcpOnNonPrimaryInterfaceo   r[   driverrouterstatic_routesleaser   Nc                   > [         TU ]  S5        XR                  S'   X R                  S'   X0R                  S'   X@R                  S'   XPR                  S'   g )Nz&failure to find primary DHCP interfacer[   ra   rb   rc   rd   rR   )r.   r[   ra   rb   rc   rd   rB   s         r   r0   1ReportableErrorDhcpOnNonPrimaryInterface.__init__p   sY     	AB,5[))/X&)/X&0=_-(-W%r?   rL   )rC   rF   rG   rH   r	   rI   r   r
   r   r   r0   rK   rV   rW   s   @r   r_   r_   o   so    . C=. 	.
 .  U38_ 56. CH~. 
. .r?   r_   c                   8   ^  \ rS rSrS\S\SS4U 4S jjrSrU =r$ )ReportableErrorImdsUrlError   	exceptionrP   r   Nc                F  > [        UR                  [        R                  5      (       a  SnO|[        UR                  [        R                  5      (       a  SnOP[        UR                  [        R
                  5      (       a  SnO$UR                  (       a  SUR                   S3nOSn[        TU ]!  U5        UR                  (       a  UR                  U R                  S'   X R                  S'   [        U5      U R                  S	'   UR                  U R                  S
'   g )Nz connection timeout querying IMDSzconnection error querying IMDSzread timeout querying IMDSzhttp error z querying IMDSzunexpected error querying IMDS	http_coderP   rj   url)r;   causerequestsConnectTimeoutConnectionErrorReadTimeoutcoderS   r0   r"   reprrm   )r.   rj   rP   r#   rB   s       r   r0   $ReportableErrorImdsUrlError.__init__   s    ioox'>'>??7F	)A)ABB5F	)=)=>>1F^^"9>>"2.AF5F >>09D  -+3Z(,0O[)&/mmU#r?   rL   )	rC   rF   rG   rH   r   rU   r0   rK   rV   rW   s   @r   rh   rh      s"    4X 4 44 4 4r?   rh   c                   8   ^  \ rS rSrS\S\SS4U 4S jjrSrU =r$ )"ReportableErrorImdsInvalidMetadata   keyvaluer   Nc                v   > [         TU ]  SU 35        XR                  S'   [        U5      U R                  S'   g )Nzinvalid IMDS metadata for key=ry   rz   )rS   r0   r"   rt   )r.   ry   rz   rB   s      r   r0   +ReportableErrorImdsInvalidMetadata.__init__   s:    9#?@&)U#(,UW%r?   rL   )	rC   rF   rG   rH   rI   r   r0   rK   rV   rW   s   @r   rw   rw      s"    4s 43 44 4 4r?   rw   c                   4   ^  \ rS rSrS\SS4U 4S jjrSrU =r$ )+ReportableErrorImdsMetadataParsingException   rj   r   Nc                T   > [         TU ]  S5        [        U5      U R                  S'   g )Nzerror parsing IMDS metadatarj   )rS   r0   rt   r"   r.   rj   rB   s     r   r0   4ReportableErrorImdsMetadataParsingException.__init__   s%    67,0O[)r?   rL   )rC   rF   rG   rH   
ValueErrorr0   rK   rV   rW   s   @r   r~   r~      s    <Z <D < <r?   r~   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )ReportableErrorOsDiskPpsFailure   c                 $   > [         TU ]  S5        g )Nzerror waiting for host shutdownrS   r0   r.   rB   s    r   r0   (ReportableErrorOsDiskPpsFailure.__init__   s    :;r?   rL   r   NrC   rF   rG   rH   r0   rK   rV   rW   s   @r   r   r      s    < <r?   r   c                   4   ^  \ rS rSrS\SS4U 4S jjrSrU =r$ )!ReportableErrorOvfInvalidMetadata   messager   Nc                 *   > [         TU ]  SU 35        g )Nz)unexpected metadata parsing ovf-env.xml: r   )r.   r   rB   s     r   r0   *ReportableErrorOvfInvalidMetadata.__init__   s    DWINOr?   rL   )rC   rF   rG   rH   rI   r0   rK   rV   rW   s   @r   r   r      s    P P P Pr?   r   c                   H   ^  \ rS rSrS\R
                  SS4U 4S jjrSrU =r$ )"ReportableErrorOvfParsingException   rj   r   Nc                B   > UR                   n[        TU ]	  SU 35        g )Nzerror parsing ovf-env.xml: )msgrS   r0   )r.   rj   r   rB   s      r   r0   +ReportableErrorOvfParsingException.__init__   s!    --6wi@Ar?   rL   )	rC   rF   rG   rH   ET
ParseErrorr0   rK   rV   rW   s   @r   r   r      s#    BR]] Bt B Br?   r   c                   4   ^  \ rS rSrS\SS4U 4S jjrSrU =r$ )!ReportableErrorUnhandledException   rj   r   Nc                 J  > [         TU ]  S5        SR                  [        R                  " [        U5      XR                  5      5      n[        R                  " UR                  S5      5      R                  S5      n[        U5      U R                  S'   X0R                  S'   g )Nzunhandled exception zutf-8rj   traceback_base64)rS   r0   join	tracebackformat_exceptiontype__traceback__base64	b64encodeencodedecodert   r"   )r.   rj   tracetrace_base64rB   s       r   r0   *ReportableErrorUnhandledException.__init__   s    ./&&Y,C,C

 ''W(=>EEgN,0O[)3?/0r?   rL   )rC   rF   rG   rH   r-   r0   rK   rV   rW   s   @r   r   r      s    @) @ @ @r?   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )!ReportableErrorProxyAgentNotFound   c                 $   > [         TU ]  S5        g )Nzazure-proxy-agent not foundr   r   s    r   r0   *ReportableErrorProxyAgentNotFound.__init__   s    67r?   rL   r   r   rW   s   @r   r   r      s    8 8r?   r   c                   H   ^  \ rS rSrS\R
                  SS4U 4S jjrSrU =r$ )&ReportableErrorProxyAgentStatusFailure   rj   r   Nc                    > [         TU ]  S5        UR                  U R                  S'   UR                  U R                  S'   UR
                  U R                  S'   g )Nz azure-proxy-agent status failure	exit_codestdoutstderr)rS   r0   r   r"   r   r   r   s     r   r0   /ReportableErrorProxyAgentStatusFailure.__init__   sS    ;<,5,?,?[))2)9)9X&)2)9)9X&r?   rL   )	rC   rF   rG   rH   r   ProcessExecutionErrorr0   rK   rV   rW   s   @r   r   r      s!    :$"<"< : : :r?   r   )|'),r   r   loggingr   r   r   r   r   typingr   r   r   r	   r
   	xml.etreer   r   ro   	cloudinitr   r   cloudinit.sources.azurer   cloudinit.url_helperr   	getLoggerrC   LOGrI   r   r-   r    rN   rY   r_   rh   rw   r~   r   r   r   r   r   r   rL   r?   r   <module>r      s  
  
   '  3 3 '  # , )! =@&
s)& #&69&& 6
i 6
r4? 46 6. .&4/ 404 4</ <<o <
P P
B B@ @8 8
:_ :r?   