Current File : //usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyc
�
�jbc
@s/ddlZddlZddlmZddlmZddlmZeje�Z	e
ejg�Zde
fd��YZde
fd��YZd	�Zd
dddddddd
�Zd
ddddddddd�	Zd
ddddddddd�	Zd
ddddddddd�	ZdS(i����N(tlog(t
url_helper(tutiltMetadataLeafDecodercBs eZdZd�Zd�ZRS(s.Decodes a leaf blob into something meaningful.cCs<|s
tS|j�}|jd�r8|jd�r8tStS(Nt{t}(tFalsetstript
startswithtendswithtTrue(tselfttext((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyt_maybe_json_objectscCs�|s
dSytj|�}Wntk
r1|SX|j|�r�ytj|�SWq�ttfk
r�}tj	d||�q�Xn|j
d�dkr�|j�S|S(Nts6Field %s looked like a json object, but it was not: %ss
i����(Rt
decode_binarytUnicodeDecodeErrorR
tjsontloadst
ValueErrort	TypeErrortLOGtwarningtfindt
splitlines(Rtfieldtblobte((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyt__call__s
	
(t__name__t
__module__t__doc__R
R(((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyRs	tMetadataMaterializercBs/eZdd�Zd�Zd�Zd�ZRS(cCsL||_d|_||_||_|dkr?t�|_n	||_dS(N(t_blobtNonet_mdt	_base_urlt_callerRt
_leaf_decoder(RRtbase_urltcallertleaf_decoder((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyt__init__5s				cCs8i}g}tj|�}|s+||fSd�}d�}x�|j�D]�}|j�}||�}|sJ|r|qJn|dkr�qJn||�r�||kr*|j|�q*qJ|jdd�}|}	t|�dkr |\}
}tj|
�}
|
dk	r d|
}	|}q n|	||<qJW||fS(NcSs|jd�rtStSdS(Nt/(R	R
R(titem((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pythas_childrenGscSs |jd�r|jd�S|S(NR+(R	trstrip(R,((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pytget_nameMs
ssecurity-credentialst=is%s/openssh-key(	RRRRtappendtsplittlentsafe_intR"(RRtleavestchildrenR-R/Rt
field_nametcontentstresourcetidenttsub_contents((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyt_parse?s6
		
cCs8|jdk	r|jS|j|j|j�|_|jS(N(R#R"t_materializeR!R$(R((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pytmaterializejscCs4|j|�\}}i}xa|D]Y}tj||�}|jd�sV|d7}n|j|�}|j||�||<q"Wi}	xQ|j�D]C\}
}tj||�}|j|�}
|j|
|
�|	|
<q�Wi}|j|�xA|	j	�D]3}
|
|krt
jd|�q�|	|
||
<q�W|S(NR+s&Duplicate key found in results from %s(R<Rtcombine_urlR	R%R=titemsR&tupdatetkeysRR(RRR'R5R6tchild_contentstct	child_urlt
child_blobt
leaf_contentsRR9tleaf_urlt	leaf_blobtjoined((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyR=ps*


	
N(RRR"R*R<R>R=(((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyR 4s
	+	cCs
|j|kS(s/Returns False if cause.code is in status_codes.(tcode(tstatus_codest
_request_argstcause((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pytskip_retry_on_codes�stlatestshttp://169.254.169.254icCs�tj||�}tj|d�}d}	y[|sHtjtt�}ntj|d|d|d|d|d|d|�}
|
j}	Wn^tjk
r�}|j	tkr�t
jtd	|�q�n$t
k
r�t
jtd	|�nX|	S(
Ns	user-dataRtssl_detailsttimeouttretriestexception_cbt
headers_cbtheaders_redacts$Failed fetching userdata from url %s(RR?t	functoolstpartialROtSKIP_USERDATA_CODEStread_file_or_urlR8tUrlErrorRKRtlogexcRt	Exception(tapi_versiontmetadata_addressRQRRRSRURVRTtud_urlt	user_datatresponseR((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pytget_instance_userdata�s$		

c
s�tj|||�}
tjtjd|d|d|d|d|d|	���fd�}yS�|
�}t|j|
|d|�}
|
j�}t|t	�s�i}n|SWn(t
k
r�tjt
d	||
�iSXdS(
NRQRRRSRURVRTcs
�|�jS(N(R8(turl(R((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pytmcaller�sR)sFailed fetching %s from url %s(RR?RWRXRZR R8R>t
isinstancetdictR]RR\R(ttreeR^R_RQRRRSR)RURVRTtmd_urlReRbtmaterializertmd((R(s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyt_get_instance_metadata�s&					
c		CsCtddd|d|d|d|d|d|d	|d
|d|�
S(NRhs
meta-data/R^R_RQRRRSR)RVRURT(Rl(	R^R_RQRRRSR)RURVRT((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pytget_instance_metadata�sc		CsCtddd|d|d|d|d|d|d	|d
|d|�
S(NRhsdynamic/instance-identityR^R_RQRRRSR)RVRURT(Rl(	R^R_RQRRRSR)RURVRT((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pytget_instance_identity�s(RWRt	cloudinitRtloggingRRt	getLoggerRRt	frozensett	NOT_FOUNDRYtobjectRR ROR"RcRlRmRn(((s7/usr/lib/python2.7/site-packages/cloudinit/ec2_utils.pyt<module>	s@ U