Current File : //usr/lib/python2.7/site-packages/cloudinit/helpers.pyo
�
oB�]c@s�ddlmZddlZddlZddlmZddlmZmZmZddl	m
Z
mZmZm
Z
ddlmZddlmZddlmZeje�Zd	efd
��YZdefd��YZd
efd��YZdefd��YZd�Zdefd��YZdefd��YZdefd��YZdefd��YZ defd��YZ!defd��YZ"d�Z#dS(i����(ttimeN(tStringIO(tNoSectionErrort
NoOptionErrortRawConfigParser(tPER_INSTANCEt
PER_ALWAYStPER_ONCEtCFG_ENV_NAME(tlog(t
type_utils(tutiltLockFailurecBseZRS((t__name__t
__module__(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRst	DummyLockcBseZRS((R
R(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR"stDummySemaphorescBsAeZd�Zejed��Zd�Zd�Zd�Z	RS(cCsdS(N((tself((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt__init__'sccst�VdS(N(R(Rt_namet_freqt_clear_on_fail((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pytlock*scCstS(N(tFalse(RRR((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pythas_run.scCstS(N(tTrue(RRR((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pytclear1scCsdS(N((R((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt	clear_all4s(
R
RRt
contextlibtcontextmanagerRRRRR(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR&s			tFileLockcBseZd�Zd�ZRS(cCs
||_dS(N(tfn(RR((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR9scCsdtj|�|jfS(Ns<%s using file %r>(R
tobj_nameR(R((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt__str__<s(R
RRR!(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR8s	cCs|jdd�S(Nt-t_(treplace(tname((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pytcanon_sem_name@stFileSemaphorescBsSeZd�Zejed��Zd�Zd�Zd�Z	d�Z
d�ZRS(cCs
||_dS(N(tsem_path(RR(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyREsccsUt|�}y|j||�VWn-tk
rP|rJ|j||�n�nXdS(N(R&t_acquiret	ExceptionR(RR%tfreqt
clear_on_fail((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRHs
cCsat|�}|j||�}ytj|�Wn+ttfk
r\tjtd|�tSXt	S(NsFailed deleting semaphore %s(
R&t	_get_pathRtdel_filetIOErrortOSErrortlogexctLOGRR(RR%R+tsem_file((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRRscCsHytj|j�Wn-ttfk
rCtjtd|j�nXdS(Ns&Failed deleting semaphore directory %s(Rtdel_dirR(R/R0R1R2(R((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR\s
cCs�|j||�rdS|j||�}dtj�t�f}ytj||�Wn+tt	fk
r�tj
td|�dSXt|�S(Ns%s: %s
s Failed writing semaphore file %s(
RtNoneR-tostgetpidRRt
write_fileR/R0R1R2R(RR%R+R3tcontents((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR)cscCs�|s|tkrtSt|�}|j||�}tjj|�rKtS||kr�tjj|j||��r�tj	d||�tStS(Ns�%s has run without canonicalized name [%s].
likely the migrator has not yet run. It will run next boot.
run manually with: cloud-init single --name=migrator(
RRR&R-R6tpathtexistsRR2twarning(RR%R+tcnameR3((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRss*	
cCsP|j}|s|tkr/tjj||�Stjj|d||f�SdS(Ns%s.%s(R(RR6R:tjoin(RR%R+R(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR-�s	(R
RRRRRRRRR)RR-(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR'Ds			
			tRunnerscBs)eZd�Zd�Zded�ZRS(cCs||_i|_dS(N(tpathstsems(RR@((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR�s	cCs�|tks|rdSd}|tkr>|jjd�}n!|tkr_|jjd�}n|sidS||jkr�t|�|j|<n|j|S(Ntsem(	RR5RR@t	get_ipathRt	get_cpathRAR'(RR+R(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt_get_sem�sc	Cs�|j|�}|s!t�}n|s0g}n|j||�r_tjd||�tdfS|j|||��g}|s�td|��nGtjd||�t	|t
�r�||�}n||�}t|fSWdQXdS(Ns%s already ran (freq=%s)sFailed to acquire lock for %ssRunning %s using lock (%s)(RERRR2tdebugRR5RRt
isinstancetdictR(	RR%tfunctortargsR+R,RBtlktresults((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pytrun�s 	
N(R
RRRER5RRM(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR?�s		tConfigMergercBsSeZdddded�Zd�Zd�Zd�Zd�Ze	d��Z
RS(cCs:||_||_||_||_||_d|_dS(N(t_pathst_dst_fnst	_base_cfgt_include_vendorR5t_cfg(RR@t
datasourcetadditional_fnstbase_cfgtinclude_vendor((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR�s					cCsxg}|jrty8|jj�}|rFt|t�rF|j|�nWqttk
rptjtd|j�qtXn|S(Ns2Failed loading of datasource config object from %s(	RPtget_config_objRGRHtappendR*RR1R2(Rtd_cfgstds_cfg((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt_get_datasource_configs�s	
cCsjg}ttjkrftjt}y|jtj|��Wqftk
rbtjtd|�qfXn|S(Ns%Failed loading of env. config from %s(	RR6tenvironRZRt	read_confR*R1R2(Rte_cfgste_fn((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt_get_env_configs�s

cCs�g}|js|Sdg}|jr5|jd�nx�|D]�}|jj|�}|r<tjj|�r<y|jtj|��Wq�t	k
r�t
jd|�q�tk
r�tj
t
d|�q�Xq<q<W|S(Ntcloud_configtvendor_cloud_configs5Skipped loading cloud-config from %s due to non-root.s&Failed loading of cloud-config from %s(RORSRZt
get_ipath_curR6R:tisfileRR_tPermissionErrorR2RFR*R1(Rti_cfgstcc_pathstcc_ptcc_fn((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt_get_instance_configs�s&			



cCs�g}|jrgxU|jD]G}y|jtj|��Wqtk
r_tjtd|�qXqWn|j|j��|j|j	��|j|j
��|jr�|j|j�ntj|�S(Ns'Failed loading of configuration from %s(
RQRZRR_R*R1R2textendRbRlR]RRt
mergemanydict(Rtcfgstc_fn((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt	_read_cfg�s	
	cCs(|jdkr!|j�|_n|jS(N(RTR5Rq(R((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pytcfgsN(R
RR5RRR]RbRlRqtpropertyRr(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRN�s					tContentHandlerscBsMeZd�Zd�Zd�Zd�Zeed�Zd�Z	d�Z
RS(cCsi|_g|_dS(N(t
registeredtinitialized(R((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRs	cCs
|j|�S(N(t
is_registered(Rtitem((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt__contains__ scCs
|j|�S(N(t_get_handler(Rtkey((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt__getitem__#scCs
||jkS(N(Ru(Rtcontent_type((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRw&scCs�t�}xI|j�D];}|r2|j|�q|j|�s|j|�qqWx|D]}||j|<q\W|r�||jkr�|jj|�n|S(N(tsett
list_typestaddRwRuRvRZ(RtmodRvt	overwritettypestt((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pytregister)s	
cCs|j|S(N(Ru(RR}((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRz7scCst|jj��S(N(tlistRutitems(R((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR�:s(R
RRRyR|RwRRR�RzR�(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRts					tPathscBs\eZdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z	RS(cCsF||_|jdd�|_|jdd�|_tjj|jd�|_tjj|jd�|_|jd�|_	tjj|jd�|_
|jd	d
�}tjj|d�|_idd6d
d
6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6d%d%6|_||_
dS(&Nt	cloud_dirs/var/lib/cloudtrun_dirs/run/cloud-inittinstances
boot-finishedtupstart_dirtseedt
templates_dirs/etc/cloud/templates/s%s.tmplthandlerstscriptssscripts/vendortvendor_scriptsRBt	boothookss
user-data.txttuserdata_rawsuser-data.txt.ituserdatasobj.pkltobj_pklscloud-config.txtRcsvendor-cloud-config.txtRdtdatasvendor-data.txttvendordata_rawsvendor-data.txt.it
vendordatas.instance-idtinstance_idsmanual-cleantmanual_clean_markertwarnings(RotgetR�R�R6R:R>t
instance_linkt
boot_finishedtupstart_conf_dtseed_dirttemplate_tpltlookupsRU(Rt	path_cfgstdsttemplate_dir((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR?s6	
cCs|j|j|�S(N(R-R�(RR%((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyReascCs|j|j|�S(N(R-R�(RR%((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRDfscCs�|js
dS|jj�}|dkr,dSt|�jtjd�}tjj|j	d|�}|j
j|�}|r�tjj||�}n|S(NR#t	instances(RUR5tget_instance_idtstrR$R6tsepR:R>R�R�R�(RR%tiidt
path_safe_iidtipathtadd_on((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt
_get_ipathks	cCs.|j|�}|s&tjd�dS|SdS(Ns?No per instance data available, is there an datasource/iid set?(R�R2R<R5(RR%R�((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyRC{s

cCs*|dkr|Stjj||j|�S(N(R5R6R:R>R�(RtbaseR%((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR-�scCs|j|j|�S(N(R-R�(RR%((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pytget_runpath�sN(
R
RR5RReRDR�RCR-R�(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR�>s"	tDefaultingConfigParsercBseeZdZdZeZd	Zd�Zd	d�Z	d�Z
d�Zd�Zd�Z
d	d�ZRS(
igcCsJ|j}ytj|||�}Wn!tk
r5ntk
rEnX|S(N(tDEF_BASERR�RR(Rtsectiontoptiontvalue((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR��s	

cCsL|j|�r2|j�dkr2|j|�ntj||||�dS(Ntdefault(thas_sectiontlowertadd_sectionRR~(RR�R�R�((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR~�s"cCs,|j||�r(tj|||�ndS(N(t
has_optionRt
remove_option(RR�R�((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR��scCs,|j||�s|jStj|||�S(N(R�tDEF_BOOLEANRt
getboolean(RR�R�((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR��scCs,|j||�s|jStj|||�S(N(R�t	DEF_FLOATRtgetfloat(RR�R�((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR��scCs,|j||�s|jStj|||�S(N(R�tDEF_INTRtgetint(RR�R�((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR��scCsWd}t�}|j|�|j�|j�}|rSdj||dg�}n|S(Nts
(RtwritetflushtgetvalueR>(RtheaderR9toutputstream((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt	stringify�s	

N(R
RR�R�RR�R5R�R�R~R�R�R�R�R�(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyR��s	
				cCs|S(N((tobject((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pytidentity�s($RRR6tsixRtsix.moves.configparserRRRtcloudinit.settingsRRRRt	cloudinitR	tloggingR
Rt	getLoggerR
R2R*RR�RRRR&R'R?RNRtR�R�R�(((s5/usr/lib/python2.7/site-packages/cloudinit/helpers.pyt<module>s*"	N-[$X3