Current File : //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�y�t|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								�