HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/__pycache__/helpers.cpython-39.pyc
a

��`�:�@s.ddlmZddlZddlZddlmZmZmZddlmZddl	m
Z
mZmZm
Z
ddlmZddlmZddlmZe�e�ZGd	d
�d
e�ZGdd�de�ZGd
d�de�ZGdd�de�Zdd�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd�de�Z"dS)�)�timeN)�NoSectionError�
NoOptionError�RawConfigParser)�StringIO)�PER_INSTANCE�
PER_ALWAYS�PER_ONCE�CFG_ENV_NAME)�log)�
type_utils)�utilc@seZdZdS)�LockFailureN��__name__�
__module__�__qualname__�rr�3/usr/lib/python3/dist-packages/cloudinit/helpers.pyrsrc@seZdZdS)�	DummyLockNrrrrrr src@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_all2szDummySemaphores.clear_allN)F)
rrrr�
contextlib�contextmanagerrrr r!rrrrr$src@seZdZdd�Zdd�ZdS)�FileLockcCs
||_dSr)�fn)rr%rrrr7szFileLock.__init__cCsdt�|�|jfS)Nz<%s using file %r>)r�obj_namer%rrrr�__str__:szFileLock.__str__N)rrrrr'rrrrr$6sr$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.rrrrCszFileSemaphores.__init__FccsDt|�}z|�||�VWn$ty>|r8|�||��Yn0dSr)r,�_acquire�	Exceptionr )rr+�freq�
clear_on_failrrrrFszFileSemaphores.lockc	CsNt|�}|�||�}zt�|�Wn&ttfyHt�td|�YdS0dS)NzFailed deleting semaphore %sFT)r,�	_get_pathr
�del_file�IOError�OSError�logexc�LOG)rr+r1�sem_filerrrr PszFileSemaphores.clearc	Cs<zt�|j�Wn&ttfy6t�td|j�Yn0dS)Nz&Failed deleting semaphore directory %s)r
�del_dirr.r5r6r7r8rrrrr!Zs�zFileSemaphores.clear_allc	Csn|�||�rdS|�||�}dt��t�f}zt�||�Wn&ttfydt�	t
d|�YdS0t|�S)Nz%s: %s
z Failed writing semaphore file %s)rr3�os�getpidrr
�
write_filer5r6r7r8r$)rr+r1r9�contentsrrrr/as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)rr,r3r;�path�existsr8�warning)rr+r1�cnamer9rrrrqs�zFileSemaphores.has_runcCs:|j}|r|tkr tj�||�Stj�|d||f�SdS)Nz%s.%s)r.rr;r?�join)rr+r1r.rrrr3�szFileSemaphores._get_pathN)F)rrrrr"r#rr r!r/rr3rrrrr-Bs	
r-c@s&eZdZdd�Zdd�Zd	dd�ZdS)
�RunnerscCs||_i|_dSr)�paths�sems)rrErrrr�szRunners.__init__cCsh|tks|sdSd}|tkr*|j�d�}n|tkr>|j�d�}|sFdS||jvr^t|�|j|<|j|S)N�sem)rrrE�	get_ipathr	�	get_cpathrFr-)rr1r.rrr�_get_sem�s
zRunners._get_semNFc	Cs�|�|�}|st�}|sg}|�||�r:t�d||�dS|�|||��h}|s\td|��nFt�d||�t|t�r�|fi|��}n||�}d|fWd�SWd�n1s�0YdS)Nz%s already ran (freq=%s))FNzFailed to acquire lock for %szRunning %s using lock (%s)T)	rJrrr8�debugrr�
isinstance�dict)	rr+�functor�argsr1r2rGZlk�resultsrrr�run�s 

zRunners.run)NF)rrrrrJrQrrrrrD�srDc@sBeZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zed
d��Z	dS)�ConfigMergerNTcCs(||_||_||_||_||_d|_dSr)�_paths�_ds�_fns�	_base_cfg�_include_vendor�_cfg)rrE�
datasource�additional_fns�base_cfg�include_vendorrrrr�szConfigMerger.__init__cCsXg}|jrTz&|j��}|r.t|t�r.|�|�Wn"tyRt�td|j�Yn0|S)Nz2Failed loading of datasource config object from %s)	rT�get_config_objrLrM�appendr0r
r7r8)rZd_cfgs�ds_cfgrrr�_get_datasource_configs�s
�
z$ConfigMerger._get_datasource_configscCsRg}ttjvrNtjt}z|�t�|��Wn tyLt�td|�Yn0|S)Nz%Failed loading of env. config from %s)	r
r;�environr^r
�	read_confr0r7r8)rZe_cfgsZe_fnrrr�_get_env_configs�s

�
zConfigMerger._get_env_configsc	Cs�g}|js|Sdg}|jr$|�d�|D]r}|j�|�}|r(tj�|�r(z|�t�|��Wq(t	yzt
�d|�Yq(ty�t�
t
d|�Yq(0q(|S)N�cloud_config�vendor_cloud_configz5Skipped loading cloud-config from %s due to non-root.z&Failed loading of cloud-config from %s)rSrWr^�
get_ipath_curr;r?�isfiler
rb�PermissionErrorr8rKr0r7)rZi_cfgsZcc_pathsZcc_pZcc_fnrrr�_get_instance_configs�s*
��z"ConfigMerger._get_instance_configsc	Cs�g}|jrL|jD]:}z|�t�|��WqtyHt�td|�Yq0q|�|���|�|�	��|�|�
��|jr�|�|j�t�|�S)Nz'Failed loading of configuration from %s)
rUr^r
rbr0r7r8�extendrcrir`rV�
mergemanydict)r�cfgsZc_fnrrr�	_read_cfg�s
�zConfigMerger._read_cfgcCs|jdur|��|_|jSr)rXrmrrrr�cfgs

zConfigMerger.cfg)NNNNT)
rrrrr`rcrirm�propertyrnrrrrrR�s�
rRc@sFeZdZdd�Zdd�Zdd�Zdd�Zddd�Zd
d�Zdd�Z	dS)�ContentHandlerscCsi|_g|_dSr)�
registered�initializedrrrrrszContentHandlers.__init__cCs
|�|�Sr)�
is_registered)r�itemrrr�__contains__szContentHandlers.__contains__cCs
|�|�Sr)�_get_handler)r�keyrrr�__getitem__!szContentHandlers.__getitem__cCs
||jvSr�rq�r�content_typerrrrs$szContentHandlers.is_registeredFTcCsjt�}|��D](}|r"|�|�q|�|�s|�|�q|D]}||j|<q<|rf||jvrf|j�|�|Sr)�set�
list_types�addrsrqrrr^)r�modrr�	overwrite�types�trrr�register's
zContentHandlers.registercCs
|j|Srryrzrrrrv5szContentHandlers._get_handlercCst|j���Sr)�listrq�itemsrrrrr�8szContentHandlers.itemsN)FT)
rrrrrurxrsr�rvr�rrrrrps
rpc@sReZdZddd�Zddd�Zddd�Zddd	�Zdd
d�Zddd
�Zddd�Z	dS)�PathsNcCs�||_|�dd�|_|�dd�|_tj�|jd�|_tj�|jd�|_|�d�|_	tj�|jd�|_
|�d	d
�}tj�|d�|_dd
ddddddddddddddd�|_||_
dS)N�	cloud_dirz/var/lib/cloud�run_dirz/run/cloud-init�instancez
boot-finished�upstart_dir�seed�
templates_dirz/etc/cloud/templates/z%s.tmpl�handlers�scriptszscripts/vendorrG�	boothooksz
user-data.txtzuser-data.txt.izobj.pklzcloud-config.txtzvendor-cloud-config.txt�datazvendor-data.txtzvendor-data.txt.iz.instance-idzmanual-clean�warnings)r�r��vendor_scriptsrGr��userdata_raw�userdata�obj_pklrdrer��vendordata_raw�
vendordata�instance_id�manual_clean_markerr�)rl�getr�r�r;r?rC�
instance_link�
boot_finished�upstart_conf_dZseed_dir�template_tpl�lookupsrY)rZ	path_cfgs�dsZtemplate_dirrrrr=s6�zPaths.__init__cCs|�|j|�Sr)r3r��rr+rrrrf_szPaths.get_ipath_curcCs|�|j|�Sr)r3r�r�rrrrIdszPaths.get_cpathcCsf|js
dS|j��}|dur dSt|��tjd�}tj�|jd|�}|j	�
|�}|rbtj�||�}|S)Nr)�	instances)rY�get_instance_id�strr*r;�sepr?rCr�r�r�)rr+�iidZ
path_safe_iid�ipath�add_onrrr�
_get_ipathis
zPaths._get_ipathcCs$|�|�}|st�d�dS|SdS)Nz?No per instance data available, is there an datasource/iid set?)r�r8rA)rr+r�rrrrHys


zPaths.get_ipathcCs |dur|Stj�||j|�Sr)r;r?rCr�)r�baser+rrrr3�szPaths._get_pathcCs|�|j|�Sr)r3r�r�rrr�get_runpath�szPaths.get_runpath)N)N)N)N)N)N)N)
rrrrrfrIr�rHr3r�rrrrr�<s
"



	
r�c@sXeZdZdZdZdZdZdd�Zddd�Zd	d
�Z	dd�Z
d
d�Zdd�Zddd�Z
dS)�DefaultingConfigParserrgFNcCs@|j}zt�|||�}Wn"ty*Ynty:Yn0|Sr)�DEF_BASErr�rr�r�section�option�valuerrrr��szDefaultingConfigParser.getcCs4|�|�s |��dkr |�|�t�||||�dS)N�default)�has_section�lower�add_sectionrr|r�rrrr|�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�getvaluerC)r�headerr>Zoutputstreamrrr�	stringify�s
z DefaultingConfigParser.stringify)N)N)rrrr�r�r�r�r�r|r�r�r�r�r�rrrrr��s

r�)#rr"r;�configparserrrr�ior�cloudinit.settingsrrr	r
�	cloudinitr�loggingrr
�	getLoggerrr8r0r�objectrrr$r,r-rDrRrpr�r�rrrr�<module>s(
N-[$X