HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/cloudinit/config/__pycache__/cc_chef.cpython-38.pyc
U

Ӈg�0�
@s�UdZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
mZmZddl
mZddlmZddlmZddlmZdd	lmZd
Zeddd
dddg�Zedg�ZdZdZdZdZdddeddedddddd�Ze dg�Z!e dddd d!d"d#g�Z"e e�#e�$�e!e"d$d%d&d'd(g��Z%d)Z&d*Z'ed+d,d-d.d/g�Z(e�)e*�Z+d0d1ged2gd3�Z,ee-d4<d5d6�Z.d7d8�Z/e0eee1dd9�d:d;�Z2d<d=�Z3ee1d>�d?d@�Z4dLedA�dBdC�Z5edD�dEdF�Z6ee0dG�dHdI�Z7dJdK�Z8dS)Mz7Chef: module that configures, starts and installs chef.�N)�List)�subp�
temp_utils�	templater�
url_helper�util)�Cloud)�Config)�
MetaSchema)�Distro)�
PER_ALWAYS�1.8z	/etc/chefz
/var/log/chefz
/var/lib/chefz/var/cache/chefz/var/backups/chefz
/var/run/chefz#https://www.chef.io/chef/install.sh�z/etc/chef/validation.pemz/etc/chef/firstboot.jsonz:verify_nonez:infoz/var/log/chef/client.logz/etc/chef/client.pemz/var/run/chef/client.pidT)Zssl_verify_modeZ	log_level�log_location�validation_key�validation_cert�
client_key�json_attribs�file_cache_pathZfile_backup_path�pid_file�	show_time�encrypted_data_bag_secretrrrrrrrr�
server_url�	node_name�environment�validation_nameZchef_licensez/etc/chef/client.rbz/usr/bin/chef-clientz-dz-iZ1800z-sZ20Zcc_chef�all�chef)�idZdistrosZ	frequencyZactivate_by_schema_keys�metacCs.tj|ddd�}|r*tj�t�r*t�t�dS)NZdelete_validation_post_execF��default)r�get_cfg_option_bool�os�path�isfile�CHEF_VALIDATION_PEM_PATH�unlink)�chef_cfgZ
delete_pem�r)�:/usr/lib/python3/dist-packages/cloudinit/config/cc_chef.py�
post_run_chefis�r+c	Cs�t��}|��D]Z\}}|tkr.t�d|�q|dkr@d||<q|tkrZt�||�||<qt�	||�||<q|�
t��tj	|d|d�tj	|ddd�|d|dd��|S)	Nz'Skipping unknown chef template key '%s'rr rZ_defaultrr)Zgenerated_byrrrr)�CHEF_RB_TPL_DEFAULTS�copy�items�CHEF_RB_TPL_KEYS�LOG�debug�CHEF_RB_TPL_BOOL_KEYSrr"�get_cfg_option_str�updateZmake_header)�iidr(�params�k�vr)r)r*�get_template_paramsqs6
����r9)�name�cfg�cloud�args�returncCsd|krt�d|�dS|d}t�|d�}|s8tt�}t�|t�D]}t�	|�qD|�
dt�}|�
d�}|r�|dkr�t�||�nt
j�|�s�t�d|�|�d	�}	|	�rt|j���}
t|
|�}t�}|��D]&\}
}|
tkr�|r�|�t
j�|��q�t�|�t�|	t|�nt�d
t�tj|dt d�}|�sBt�!d
�n^i}d|k�r\|d|d<d|k�r�|d}t|�"��D]}
||
||
<�qzt�|t#�$|��tj%|ddd�}t&�'t(�}|�r�|�r�t)||�}n|�r�tj%|ddd�}nd}|�rt*|�t+|�dS)z'Handler method activated by cloud-init.rz8Skipping module named %s, no 'chef' key in configurationNZdirectoriesrr�systemzWchef validation_cert provided as 'system', but validation_key path '%s' does not exist.zchef_client.rbz&No template found, not rendering to %sZfirstboot_pathr z7First boot path empty, not writing first boot json fileZrun_list�initial_attributes�
force_installF�exec),r0r1rZget_cfg_option_list�list�	CHEF_DIRS�	itertools�chain�REQUIRED_CHEF_DIRSZ
ensure_dir�getr&�
write_filer#r$r%�warningZget_template_filename�strZ
datasourceZget_instance_idr9�setr.�CHEF_RB_TPL_PATH_KEYS�add�dirnameZensure_dirsrZrender_to_file�CHEF_RB_PATHr3�CHEF_FB_PATH�info�keys�json�dumpsr"rZis_exe�CHEF_EXEC_PATH�install_chef�run_chefr+)r:r;r<r=r(Z	chef_dirs�dZ	vkey_pathZvcertZtemplate_fnr5r6Zparam_pathsr7r8Zfb_filenameZinitial_jsonr@rAZ	installed�runr)r)r*�handle�s|�
�


�

�
r[cCs�t�d�tg}d|krl|d}t|ttf�r:|�|�qvt|t�rP|�|�qvt�	dt
|��|�t�n
|�t�tj|dd�dS)NzRunning chef-clientZexec_argumentszRUnknown type %s provided for chef 'exec_arguments' expected list, tuple, or stringF��capture)
r0r1rV�
isinstancerC�tuple�extendrK�appendrJ�type�CHEF_EXEC_DEF_ARGSr)r(�cmdZcmd_argsr)r)r*rX�s

�
rX)�distror=c
Ks||��}|�dd�}tj|��dd��L}tj�||�}|�d|�t	j
||dd�tjfd|i|��W5QR�SQRXd	S)
aWrite blob to a tempfile, and call subp with args, kwargs. Then cleanup.

    'basename' as a kwarg allows providing the basename for the file.
    The 'args' argument to subp will be updated with the full path to the
    filename as the first argument.
    �basenameZ	subp_blobT)�dirZ	needs_exeri�)�moder=N)r-�poprZtempdirZget_tmp_exec_pathr#r$�join�insertrrIr)�blobrer=�kwargsrfZtmpdZtmpfr)r)r*�subp_blob_in_tempfile�s�rn)recCsP|dkrt}|dkrt}|dkr&g}nd|g}tj||d�j}t|||ddd�S)agInstall an omnibus unified package from url.

    @param url: URL where blob of chef content may be downloaded. Defaults to
        OMNIBUS_URL.
    @param retries: Number of retries to perform when attempting to read url.
        Defaults to OMNIBUS_URL_RETRIES
    @param omnibus_version: Optional version string to require for omnibus
        install.
    Nz-v)�url�retrieszchef-omnibus-installF)rerlr=rfr])�OMNIBUS_URL�OMNIBUS_URL_RETRIESrZreadurl�contentsrn)rerorp�omnibus_versionr=Zcontentr)r)r*�install_chef_from_omnibuss�ru)r<cCs�t�|dd�}tj|ddd�}|dkrbt�|dd�}t�|dt�}t|||j�tj|dd	d�}n`|dkrz|j�d
g�nH|dkr�t�|d�}t|jt�|d
�t�|d�|d�nt	�
d|�d}|S)N�install_typeZpackagesrBFr Zgems�version�ruby_versionTrZomnibusrtZomnibus_urlZomnibus_url_retries)rerorprtzUnknown chef install type '%s')rr3r"�RUBY_VERSION_DEFAULT�install_chef_from_gemsre�install_packagesruZget_cfg_option_intr0rJ)r<r(rvrZ�chef_versionrxrtr)r)r*rW.s8��

�rW)r>cCs&d|d|g}|dkr"|�d�|S)Nzruby%sz
ruby%s-devr
)zlibopenssl-ruby1.8zrubygems1.8)r`)rwZpkgsr)r)r*�get_ruby_packagesOs
r}c
Cs�|�t|��tj�d�s*t�d|d�tj�d�sFt�d|d�|rptjdddd|dd	d
ddg	d
d�ntjddddd	d
ddgd
d�dS)Nz/usr/bin/gemz/usr/bin/gem%sz
/usr/bin/rubyz/usr/bin/ruby%s�installrz-v %sz--no-riz	--no-rdocz--bindirz/usr/binz-qFr\)r{r}r#r$�existsrZsym_linkr)rxr|rer)r)r*rzWs>���
�rz)NNN)9�__doc__rErTZloggingr#�typingrZ	cloudinitrrrrrZcloudinit.cloudrZcloudinit.configr	Zcloudinit.config.schemar
Zcloudinit.distrosrZcloudinit.settingsrryr_rDrGrqrrr&rQr,�	frozensetr2rMrFrSr/rPrVrcZ	getLogger�__name__r0r�__annotations__r+r9rKrCr[rXrnrurWr}rzr)r)r)r*�<module>	s���
���
�����
�#R��!