o x[h @sddlZddlZddlZddlZddlmZmZddlmZddlm Z m Z m Z m Z m Z ddlmZddlZddlmZmZddlmZddlmZeeZ d+d e ed ed edefddZGdddeZGdddeZ GdddeZ!GdddeZ"GdddeZ#GdddeZ$GdddeZ%Gdd d eZ&Gd!d"d"eZ'Gd#d$d$eZ(Gd%d&d&eZ)Gd'd(d(eZ*Gd)d*d*eZ+dS),N)datetimetimezone)StringIO)AnyDictListOptionalTuple) ElementTree)subpversion)identity)UrlError|'data delimiter quotecharreturncCsPt}tj|||tjd||WdS1s!wYdS)zEncode report data with csv.)rrquotingN)rcsvwriter QUOTE_MINIMALwriterowgetvaluerstrip)rrrior@/usr/lib/python3/dist-packages/cloudinit/sources/azure/errors.py encode_reports $rc@s^eZdZdddedeeeefddfddZdefdd Zde fd d Z defd d Z dS)ReportableErrorN)supporting_datareasonr!rc Csdt|_d|_||_|r||_ni|_ttj |_ zt |_ WdSty?}z d||_ WYd}~dSd}~ww)Nz Cloud-Init/z%https://aka.ms/linuxprovisioningerrorzfailed to read vm id: )r version_stringagentdocumentation_urlr"r!rnowrutc timestampr query_vm_idvm_id Exception)selfr"r!id_errorrrr__init__(szReportableError.__init__cCsddd|jd|jg}|dd|jD7}|d|jd|jd|jg7}t|S) Nz result=errorzreason=zagent=cSsg|] \}}|d|qS)=r).0kvrrr Fsz5ReportableError.as_encoded_report..zvm_id=z timestamp=zdocumentation_url=) r"r$r!itemsr*r( isoformatr%r)r,rrrras_encoded_report>s    z!ReportableError.as_encoded_reportcCs.t|to|j|jko|j|jko|j|jkS)N) isinstancer r(r"r!)r,otherrrr__eq__Os    zReportableError.__eq__cCs&|jjd|jd|jd|jdS)Nz(reason=z , timestamp=z, supporting_data=)) __class____name__r"r(r!r,rrr__repr__Ws zReportableError.__repr__) r< __module__ __qualname__strrrrr.r6boolr9r>rrrrr 's  r c&eZdZdeddffdd ZZS)$ReportableErrorDhcpInterfaceNotFounddurationrNcstd||jd<dS)Nzfailure to find DHCP interfacerEsuperr.r!)r,rEr;rrr.as z-ReportableErrorDhcpInterfaceNotFound.__init__)r<r?r@floatr. __classcell__rrrHrrD`rDcs.eZdZdedeeddffdd ZZS)ReportableErrorDhcpLeaserE interfacerNcs$td||jd<||jd<dS)Nzfailure to obtain DHCP leaserErMrF)r,rErMrHrrr.hs  z!ReportableErrorDhcpLease.__init__)r<r?r@rIrrAr.rJrrrHrrLgs&rLc sZeZdZdeedeedeedeeeeefdeeefddf fdd Z Z S) (ReportableErrorDhcpOnNonPrimaryInterfacerMdriverrouter static_routesleaserNcsBtd||jd<||jd<||jd<||jd<||jd<dS)Nz&failure to find primary DHCP interfacerMrOrPrQrRrF)r,rMrOrPrQrRrHrrr.ps    z1ReportableErrorDhcpOnNonPrimaryInterface.__init__) r<r?r@rrArr rrr.rJrrrHrrNos rNc*eZdZdededdffdd ZZS)ReportableErrorImdsUrlError exceptionrErNcst|jtjr d}n!t|jtjrd}nt|jtjrd}n |jr)d|jd}nd}t||jr:|j|j d<||j d<t ||j d <|j |j d <dS) Nz connection timeout querying IMDSzconnection error querying IMDSzread timeout querying IMDSz http error z querying IMDSzunexpected error querying IMDS http_coderErUurl) r7causerequestsConnectTimeoutConnectionError ReadTimeoutcoderGr.r!reprrW)r,rUrEr"rHrrr.s   z$ReportableErrorImdsUrlError.__init__)r<r?r@rrIr.rJrrrHrrT"rTcrS)"ReportableErrorImdsInvalidMetadatakeyvaluerNcs.td|||jd<t||jd<dS)Nzinvalid IMDS metadata for key=rarb)rGr.r!r^)r,rarbrHrrr.s z+ReportableErrorImdsInvalidMetadata.__init__)r<r?r@rArr.rJrrrHrr`r_r`crC)+ReportableErrorImdsMetadataParsingExceptionrUrNcstdt||jd<dS)Nzerror parsing IMDS metadatarU)rGr.r^r!r,rUrHrrr.s z4ReportableErrorImdsMetadataParsingException.__init__)r<r?r@ ValueErrorr.rJrrrHrrcrKrcceZdZdfdd ZZS)ReportableErrorOsDiskPpsFailurerNctddS)Nzerror waiting for host shutdownrGr.r=rHrrr.z(ReportableErrorOsDiskPpsFailure.__init__rNr<r?r@r.rJrrrHrrgrgcrC)!ReportableErrorOvfInvalidMetadatamessagerNcstd|dS)Nz)unexpected metadata parsing ovf-env.xml: ri)r,rorHrrr.sz*ReportableErrorOvfInvalidMetadata.__init__)r<r?r@rAr.rJrrrHrrnrKrnc(eZdZdejddffdd ZZS)"ReportableErrorOvfParsingExceptionrUrNcs|j}td|dS)Nzerror parsing ovf-env.xml: )msgrGr.)r,rUrorHrrr.sz+ReportableErrorOvfParsingException.__init__)r<r?r@ET ParseErrorr.rJrrrHrrq rqcrC)!ReportableErrorUnhandledExceptionrUrNcsXtddtt|||j}t| d d}t ||j d<||j d<dS)Nzunhandled exceptionzutf-8rUtraceback_base64) rGr.join tracebackformat_exceptiontype __traceback__base64 b64encodeencodedecoder^r!)r,rUtrace trace_base64rHrrr.s  z*ReportableErrorUnhandledException.__init__)r<r?r@r+r.rJrrrHrrvrKrvcrf)!ReportableErrorProxyAgentNotFoundrNcrh)Nzazure-proxy-agent not foundrir=rHrrr.rjz*ReportableErrorProxyAgentNotFound.__init__rkrlrrrHrrrmrcrp)&ReportableErrorProxyAgentStatusFailurerUrNcs4td|j|jd<|j|jd<|j|jd<dS)Nz azure-proxy-agent status failure exit_codestdoutstderr)rGr.rr!rrrdrHrrr.s   z/ReportableErrorProxyAgentStatusFailure.__init__)r<r?r@r ProcessExecutionErrorr.rJrrrHrrrur)rr),r~rloggingrzrrrrtypingrrrrr xml.etreer rsrY cloudinitr r cloudinit.sources.azurer cloudinit.url_helperr getLoggerr<LOGrArr+r rDrLrNrTr`rcrgrnrqrvrrrrrrsH      9