Viewing File: /usr/lib/python2.7/site-packages/cloudinit/user_data.pyo

ó
oBú]c@soddlZddlmZddlmZddlmZddlmZddl	Z	ddl
mZddl
mZ
ddlmZmZdd	l
mZe
jeƒZejZejZejZd
ZddgZd
dgZdgZdZdZdZddddddddgZdZ dgZ!d„Z"d„Z#de$fd„ƒYZ%d„Z&ed „Z'dS(!iÿÿÿÿN(tMIMEBase(t
MIMEMultipart(tMIMENonMultipart(tMIMEText(thandlers(tlog(tread_file_or_urltUrlError(tutilsContent-Types
text/plainstext/x-not-multipartstext/x-include-urlstext/x-include-once-urlstext/cloud-config-archivestext/cloud-configsapplication/octet-streamsapplication/gzipsapplication/gzip-compressedsapplication/gzippedsapplication/x-compresssapplication/x-compressedsapplication/x-gunzipsapplication/x-gzipsapplication/x-gzip-compressedsNumber-AttachmentscCs||=|||<dS(N((tmsgtkeytvalue((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt_replace_header?scCs'|d=|jdddt|ƒƒdS(NsContent-Dispositiont
attachmenttfilename(t
add_headertstr(R	R((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt
_set_filenameDs	tUserDataProcessorcBseeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d
d„Zd	„ZRS(cCs||_tj|ƒ|_dS(N(tpathsRtfetch_ssl_detailstssl_details(tselfR((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt__init__Ks	cCs\tƒ}t|tƒrBx=|D]}|jt|ƒ|ƒqWn|jt|ƒ|ƒ|S(N(Rt
isinstancetlistt_process_msgtconvert_string(Rtblobtaccumulating_msgtb((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pytprocessOs	
cCs*d„}x|jƒD]}t|ƒr.qnd}|jƒ}tj|ƒ}t}|tkrÁy%tj|dtƒ}d}t	}WqÁtj
k
r½}	tjd|t
|ƒ|	ƒqqÁXn|sÐt}n|tkrë||ƒ}n|dkr|}n|rŸ|jddƒ\}
}t|
|ƒ}|j|ƒ|jƒr\t||jƒƒnx7dD]/}
|
|krct||
t||
ƒƒqcqcW|}n||kr¾t|t|ƒn|tkrà|j||ƒqn|tkr|j||ƒqnt|t|ƒ|j||ƒqWdS(NcSs
tj|ƒS(N(Rttype_from_starts_with(tpayload((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt
find_ctypeZstquiets<Failed decompressing payload from %s of length %s due to: %st/isLaunch-Index(sLaunch-Index(twalktis_skippabletNonetget_content_typeRtfully_decoded_payloadtFalsetDECOMP_TYPEStdecomp_gziptTruetDecompressionErrortLOGtwarningtlent
UNDEF_TYPEtTYPE_NEEDEDtsplitRtset_payloadtget_filenameRRRtCONTENT_TYPEt
INCLUDE_TYPESt_do_includet
ARCHIVE_TYPESt_explode_archivet_attach_part(Rtbase_msgt
append_msgR"tparttctypet
ctype_origR!twas_compressedtetmaintypetsubtypetn_partth((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyRXsV	
	
		

!	cCsï|jddƒ}d}|jƒtkrxy7tj|jdtƒƒ}|r`|jdƒ}nWqxtk
rtqxXn|dk	r|}n|dkr¢|}n|dk	rëy |j	dt
t|ƒƒƒWqëtt
fk
rçqëXndS(NsLaunch-Indextdecodeslaunch-index(tgetR'R(tEXAMINE_FOR_LAUNCH_INDEXRt	load_yamltget_payloadR-t	ExceptionRRtintt
ValueErrort	TypeError(RR	t
header_idxtpayload_idxR!((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt_attach_launch_index¡s$
		 cCs7tj|ddƒ}tjj|jjdƒd|ƒS(Ntmd5i@tdataturlcache(Rt	hash_blobtostpathtjoinRt
get_ipath_cur(Rtentrytentry_fn((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt_get_include_once_filename¹scCs1|jƒs t|t|ƒn|j|ƒdS(N(R6RtPART_FN_TPLRS(RR	tattached_id((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt_process_before_attach¾sc

Cs&t}x|jƒD]}|jƒ}|jdƒrS|tdƒjƒ}t}n.|jdƒr|tdƒjƒ}t}n|jdƒr–qn|jƒ}|s®qnd}d}|rÒ|j	|ƒ}n|rüt
jj|ƒrüt
j|ƒ}n÷yt|ddddd|jƒ}|rN|jƒrNt
j||jd	d
ƒn|jƒrf|j}ntjd||jƒWnstk
rÍ}	t|	ƒ}
||
kr½|
dj|ƒ7}
ntj|
ƒn&tk
rò}tjd
||ƒnX|dk	rt|ƒ}|j||ƒqqWdS(Ns
#include-onces#includet#ttimeoutitretriesi
Rtmodei€s6Fetching from %s resulted in a invalid http code of %ss
 for url: {0}sFetching from %s resulted in %s(R*t
splitlinestlowert
startswithR1tlstripR-tstripR'R^RXRYtisfileRt	load_fileRRtokt
write_filetcontentsR/R0tcodeRRtformattIOErrorRR(
RtcontentR>tinclude_once_ontlinetlc_linetinclude_urltinclude_once_fntrespturletmessagetioetnew_msg((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyR9ÃsR		
		c
Cstj|dgdttfƒ}xÛ|D]Ó}t|tjƒrPi|d6}nt|tƒseq(n|jddƒ}|jdƒ}|sÂt	}t|tj
ƒr­t}ntj
||ƒ}n|jddƒ\}}	|dkrt|tj
ƒr|jƒ}nt|d	|	ƒ}
nt||	ƒ}
|
j|ƒd
|krXt|
|d
ƒnd|kr|
jdt|dƒƒnxgt|jƒƒD]S}|jƒdd
ddd
tjƒtjƒfkrÓq”n|
j|||ƒq”W|j||
ƒq(WdS(NtdefaulttallowedRstttypeR$ittextt_subtypeRslaunch-indexsLaunch-Indexscontent-disposition(RRKRtsetRtsixtstring_typestdictRItARCHIVE_UNDEF_TYPEtbinary_typetARCHIVE_UNDEF_BINARY_TYPERR R4RHRRR5RRRtkeysRgtATTACHMENT_FIELDR7R<(RtarchiveR>tentriestentRstmtypeR~RDRER	theader((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyR;ýs@!
	
	cCs‘t|krd|t<n|dk	r>t|tt|ƒƒnd}yt|jtƒƒ}Wn-ttfk
rŒt|tt|ƒƒnX|S(s
        Return the number of attachments to this MIMEMultipart by looking
        at its 'Number-Attachments' header.
        t0iN(RŒR'RRRNRIRORP(Rt	outer_msgt	new_countt
fetched_count((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt_multi_part_count,s
cCsH|j|ƒ}|j||dƒ|j|ƒ|j||dƒdS(s¸
        Attach a message to an outer message. outermsg must be a MIMEMultipart.
        Modifies a header in the outer message to keep track of number of
        attachments.
        iN(R–Ratattach(RR“R?t
part_count((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyR<>s
N(
t__name__t
__module__RRRRSR^RaR9R;R'R–R<(((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyRJs				I				:	/cCs,|jƒpd}|jƒdkr(tStS(NR€t	multipart(tget_content_maintypeRgR-R*(R?t
part_maintype((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyR&JscCsž|sd}nd„}t|tjƒr<|jdƒ}n|}tj|dtƒ}d|dd!jƒkr‹tj|j	dƒƒ}n|||ƒ}|S(sJconvert a string (more likely bytes) or a message into
    a mime message.R€cSs8|jddƒ\}}t||ƒ}|j|ƒ|S(NR$i(R4RR5(RUtcontent_typeRDRER	((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt
create_binmsgYs
sutf-8RHs
mime-version:ii(
RR…t	text_typetencodeRR,R*Rgtmessage_from_stringRH(traw_dataRžRŸtbdataR	((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyRSs		((RXtemail.mime.baseRtemail.mime.multipartRtemail.mime.nonmultipartRtemail.mime.textRR…t	cloudinitRRtloggingtcloudinit.url_helperRRRt	getLoggerR™R/tNOT_MULTIPART_TYPER_t
OCTET_TYPER7R3R8R:R2RˆRŠR+RŒRJRRtobjectRR&R(((s7/usr/lib/python2.7/site-packages/cloudinit/user_data.pyt<module>sH								ÿ		
Back to Directory File Manager