Your IP : 216.73.216.31


Current Path : /usr/lib/python3/dist-packages/cloudinit/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cloudinit/__pycache__/helpers.cpython-38.pyc

U

�Ad�A�@sddlZddlZddlmZmZmZddlmZddlmZddl	m
Zddl	mZm
Z
mZddlmZmZmZmZe�e�ZGdd	�d	e�ZGd
d�d�ZGdd
�d
�ZGdd�d�Zdd�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�d�Z Gdd�dej!�Z"Gdd�de�Z#dS)�N)�
NoOptionError�NoSectionError�RawConfigParser)�StringIO)�time)�log)�persistence�
type_utils�util)�CFG_ENV_NAME�
PER_ALWAYS�PER_INSTANCE�PER_ONCEc@seZdZdS)�LockFailureN��__name__�
__module__�__qualname__�rr�3/usr/lib/python3/dist-packages/cloudinit/helpers.pyrsrc@seZdZdS)�	DummyLockNrrrrrrsrc@s<eZdZdd�Zejd
dd��Zdd�Zdd	�Zd
d�Z	dS)�DummySemaphorescCsdS�Nr��selfrrr�__init__!szDummySemaphores.__init__Fccst�VdSr)r)r�_name�_freqZ_clear_on_failrrr�lock$szDummySemaphores.lockcCsdS)NFr�rrrrrr�has_run(szDummySemaphores.has_runcCsdS)NTrrrrr�clear+szDummySemaphores.clearcCsdSrrrrrr�	clear_all.szDummySemaphores.clear_allN)F)
rrrr�
contextlib�contextmanagerrr r!r"rrrrr src@seZdZdd�Zdd�ZdS)�FileLockcCs
||_dSr)�fn)rr&rrrr3szFileLock.__init__cCsdt�|�|jfS)Nz<%s using file %r>)r	Zobj_namer&rrrr�__str__6szFileLock.__str__N)rrrrr'rrrrr%2sr%cCs|�dd�S)N�-�_)�replace)�namerrr�canon_sem_name:sr,c@sLeZdZdd�Zejddd��Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�ZdS)�FileSemaphorescCs
||_dSr)�sem_path)rr.rrrr?szFileSemaphores.__init__FccsFt|�}z|�||�VWn&tk
r@|r:|�||��YnXdSr)r,�_acquire�	Exceptionr!)rr+�freq�
clear_on_failrrrrBszFileSemaphores.lockc	CsPt|�}|�||�}zt�|�Wn(ttfk
rJt�td|�YdSXdS)NzFailed deleting semaphore %sFT)r,�	_get_pathr
Zdel_file�IOError�OSError�logexc�LOG)rr+r1�sem_filerrrr!LszFileSemaphores.clearc	Cs>zt�|j�Wn(ttfk
r8t�td|j�YnXdS)Nz&Failed deleting semaphore directory %s)r
Zdel_dirr.r4r5r6r7rrrrr"Vs�zFileSemaphores.clear_allc	Csp|�||�rdS|�||�}dt��t�f}zt�||�Wn(ttfk
rft�	t
d|�YdSXt|�S)Nz%s: %s
z Failed writing semaphore file %s)r r3�os�getpidrr
Z
write_filer4r5r6r7r%)rr+r1r8�contentsrrrr/^szFileSemaphores._acquirecCsf|r|tkrdSt|�}|�||�}tj�|�r4dS||krbtj�|�||��rbt�d||�dSdS)NFTz�%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)rr,r3r9�path�existsr7�warning)rr+r1Zcnamer8rrrr ns�zFileSemaphores.has_runcCs:|j}|r|tkr tj�||�Stj�|d||f�SdS)Nz%s.%s)r.r
r9r<�join)rr+r1r.rrrr3�szFileSemaphores._get_pathN)F)rrrrr#r$rr!r"r/r r3rrrrr->s	
r-c@s&eZdZdd�Zdd�Zd	dd�ZdS)
�RunnerscCs||_i|_dSr)�paths�sems)rrArrrr�szRunners.__init__cCsh|tks|sdSd}|tkr*|j�d�}n|tkr>|j�d�}|sFdS||jkr^t|�|j|<|j|S)N�sem)rr
rA�	get_ipathr�	get_cpathrBr-)rr1r.rrr�_get_sem�s
zRunners._get_semNFc	
Cs�|�|�}|st�}|sg}|�||�r:t�d||�dS|�|||��X}|s\td|��n@t�d||�t|t�r�|f|�}n||�}d|fW5QR�SW5QRXdS)Nz%s already ran (freq=%s))FNzFailed to acquire lock for %szRunning %s using lock (%s)T)	rFrr r7�debugrr�
isinstance�dict)	rr+Zfunctor�argsr1r2rCZlkZresultsrrr�run�s 

zRunners.run)NF)rrrrrFrKrrrrr@�sr@c@sHeZdZddd�Zdd�Zdd�Zd	d
�Zed�dd
�Ze	dd��Z
dS)�ConfigMergerNTcCs(||_||_||_||_||_d|_dSr)�_paths�_ds�_fns�	_base_cfg�_include_vendor�_cfg)rrA�
datasourceZadditional_fnsZbase_cfgZinclude_vendorrrrr�szConfigMerger.__init__cCsZg}|jrVz&|j��}|r.t|t�r.|�|�Wn$tk
rTt�td|j�YnX|S)Nz2Failed loading of datasource config object from %s)	rNZget_config_objrHrI�appendr0r
r6r7)rZd_cfgsZds_cfgrrr�_get_datasource_configs�s
�
z$ConfigMerger._get_datasource_configscCsTg}ttjkrPtjt}z|�t�|��Wn"tk
rNt�td|�YnX|S)Nz%Failed loading of env. config from %s)	rr9�environrTr
�	read_confr0r6r7)rZe_cfgsZe_fnrrr�_get_env_configs�s

zConfigMerger._get_env_configsc	Cs�g}|js|Sdg}|jr.|�d�|�d�|D]v}|j�|�}|r2tj�|�r2z|�t�|��Wq2t	k
r�t
�d|�Yq2tk
r�t�
t
d|�Yq2Xq2|S)N�cloud_config�vendor2_cloud_config�vendor_cloud_configz5Skipped loading cloud-config from %s due to non-root.z&Failed loading of cloud-config from %s)rMrQrT�
get_ipath_curr9r<�isfiler
rW�PermissionErrorr7rGr0r6)rZi_cfgsZcc_pathsZcc_pZcc_fnrrr�_get_instance_configs�s0

��z"ConfigMerger._get_instance_configs)�returnc	Cs�g}|jrN|jD]<}z|�t�|��Wqtk
rJt�td|�YqXq|�|���|�|�	��|�|�
��|jr�|�|j�t�|�S)Nz'Failed loading of configuration from %s)
rOrTr
rWr0r6r7�extendrXr_rUrPZ
mergemanydict)r�cfgsZc_fnrrr�	_read_cfgs"
�zConfigMerger._read_cfgcCs|jdkr|��|_|jSr)rRrcrrrr�cfgs

zConfigMerger.cfg)NNNNT)rrrrrUrXr_rIrc�propertyrdrrrrrL�s�

 rLc@sFeZdZdd�Zdd�Zdd�Zdd�Zddd�Zd
d�Zdd�Z	dS)�ContentHandlerscCsi|_g|_dSr)�
registered�initializedrrrrr(szContentHandlers.__init__cCs
|�|�Sr)�
is_registered)r�itemrrr�__contains__,szContentHandlers.__contains__cCs
|�|�Sr)�_get_handler)r�keyrrr�__getitem__/szContentHandlers.__getitem__cCs
||jkSr�rg�rZcontent_typerrrri2szContentHandlers.is_registeredFTcCsjt�}|��D](}|r"|�|�q|�|�s|�|�q|D]}||j|<q<|rf||jkrf|j�|�|Sr)�setZ
list_types�addrirgrhrT)r�modrhZ	overwrite�types�trrr�register5s
zContentHandlers.registercCs
|j|SrrorprrrrlCszContentHandlers._get_handlercCst|j���Sr)�listrg�itemsrrrrrxFszContentHandlers.itemsN)FT)
rrrrrkrnrirvrlrxrrrrrf's
rfc@sreZdZdZded�dd�Zedd�dd�Zdd	d
�Zddd�Z	dd
d�Z
ddd�Zded�dd�Z
ddd�ZdS)�Paths�N)�	path_cfgscCs�||_|�dd�|_|�dd�|_tj�|jd�|_tj�|jd�|_tj�|jd�|_	|�dd	�}tj�|d
�|_
ddd
ddddddddddddddddddd �|_||_dS)!N�	cloud_dirz/var/lib/cloud�run_dirz/run/cloud-init�instancez
boot-finishedZseedZ
templates_dirz/etc/cloud/templates/z%s.tmpl�	boothookszcloud-config.txt�data�handlers�instance-data.json�instance-data-sensitive.jsonz.instance-idzmanual-cleanzobj.pkl�scriptsrCzuser-data.txt.iz
user-data.txtzvendor-data.txt.izvendor-data2.txt.izvendor-data2.txtzvendor-data.txtzvendor2-cloud-config.txtzvendor-cloud-config.txtzscripts/vendor�warnings)rrYr�r��
instance_data�instance_data_sensitiveZinstance_idZmanual_clean_markerZobj_pklr�rCZuserdataZuserdata_rawZ
vendordataZvendordata2Zvendordata2_rawZvendordata_rawrZr[Zvendor_scriptsr�)
rb�getr|r}r9r<r?�
instance_linkZ
boot_finishedZseed_dirZtemplate_tpl�lookupsrS)rr{�dsZtemplate_dirrrrrMsJ���zPaths.__init__)�ci_pkl_versionr`cCsJt|d�st|j|jd�j|_d|jkr2d|jd<d|jkrFd|jd<dS)z(Perform deserialization fixes for Paths.r})r{r�r�r�r�r�N)�hasattrryrbrSr}r�)rr�rrr�	_unpickle{s
�



��zPaths._unpicklecCs|�|j|�Sr)r3r��rr+rrrr\�szPaths.get_ipath_curcCs|�|j|�Sr)r3r|r�rrrrE�szPaths.get_cpathcCsf|js
dS|j��}|dkr dSt|��tjd�}tj�|jd|�}|j	�
|�}|rbtj�||�}|S)Nr)Z	instances)rSZget_instance_id�strr*r9�sepr<r?r|r�r�)rr+ZiidZ
path_safe_iid�ipathZadd_onrrr�
_get_ipath�s
zPaths._get_ipathcCs$|�|�}|st�d�dS|SdS)Nz?No per instance data available, is there an datasource/iid set?)r�r7r>)rr+r�rrrrD�s
�zPaths.get_ipath)�basecCs |dkr|Stj�||j|�Sr)r9r<r?r�)rr�r+rrrr3�szPaths._get_pathcCs|�|j|�Sr)r3r}r�rrr�get_runpath�szPaths.get_runpath)N)N)N)N)N)N)N)rrrZ_ci_pkl_versionrIr�intr�r\rEr�rDr�r3r�rrrrryJs.



ryc@sXeZdZdZdZdZdZdd�Zddd�Zd	d
�Z	dd�Z
d
d�Zdd�Zddd�Z
dS)�DefaultingConfigParserrgFNcCsD|j}zt�|||�}Wn&tk
r,Yntk
r>YnX|Sr)�DEF_BASErr�rr�r�section�option�valuerrrr��szDefaultingConfigParser.getcCs4|�|�s |��dkr |�|�t�||||�dS)N�default)Zhas_section�lowerZadd_sectionrrqr�rrrrq�s
zDefaultingConfigParser.setcCs|�||�rt�|||�dSr)�
has_optionr�
remove_option�rr�r�rrrr��sz$DefaultingConfigParser.remove_optioncCs |�||�s|jSt�|||�Sr)r��DEF_BOOLEANr�
getbooleanr�rrrr��sz!DefaultingConfigParser.getbooleancCs |�||�s|jSt�|||�Sr)r��	DEF_FLOATr�getfloatr�rrrr��szDefaultingConfigParser.getfloatcCs |�||�s|jSt�|||�Sr)r��DEF_INTr�getintr�rrrr��szDefaultingConfigParser.getintcCs<d}t�}|�|�|��|��}|r8d�||dg�}|S)N��
)r�write�flush�getvaluer?)r�headerr;Zoutputstreamrrr�	stringify�s
z DefaultingConfigParser.stringify)N)N)rrrr�r�r�r�r�rqr�r�r�r�r�rrrrr��s

r�)$r#r9�configparserrrr�iorrZ	cloudinitrZloggingrr	r
Zcloudinit.settingsrrr
rZ	getLoggerrr7r0rrrr%r,r-r@rLrfZCloudInitPickleMixinryr�rrrr�<module>s&
R-j#|