HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cloudinit/cmd/devel/__pycache__/logs.cpython-310.pyc
o

�Ad�$�@s�dZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZmZdd	lmZdd
lmZmZmZmZddgZd
ZGdd�de	�Zedd�edd�edd�gZedd�edd�edd�edd�edd�ed d!�ed"d#�ed$d%�ed&d'�ed(d)�ed*d)�ed+d,�gZd-efd.d/�Zd-efd0d1�ZdFd2d3�Z d4d5�Z!d6d7�Z"d8d9�Z#d:d;�Z$d<d=�Z%dGd>e&fd?d@�Z'dAdB�Z(dCdD�Z)e*dEkr�e�+e)��dSdS)HzGDefine 'collect-logs' utility and handler to include in cloud-init cmd.�N)�datetime)�Path)�
NamedTuple)�read_cfg_paths)�Paths)�ProcessExecutionError�subp)�tempdir)�chdir�copy�
ensure_dir�
write_filez/var/log/cloud-init.logz/var/log/cloud-init-output.logz/run/cloud-initc@seZdZUeed<eed<dS)�
ApportFile�path�labelN)�__name__�
__module__�__qualname__�str�__annotations__�rr�:/usr/lib/python3/dist-packages/cloudinit/cmd/devel/logs.pyrs
rz(/var/log/installer/autoinstall-user-data�AutoInstallUserDataz/autoinstall.yaml�AutoInstallYAMLz'/etc/cloud/cloud.cfg.d/99-installer.cfg�InstallerCloudCfgz//var/log/installer/ubuntu_desktop_installer.log�UdiLogz-/var/log/installer/subiquity-server-debug.log�SubiquityServerDebugz-/var/log/installer/subiquity-client-debug.log�SubiquityClientDebugz%/var/log/installer/curtin-install.log�	CurtinLogz0/var/log/installer/subiquity-curtin-install.conf�CurtinInstallConfigz8/var/log/installer/curtin-install/subiquity-initial.conf�CurtinConfigInitialz:/var/log/installer/curtin-install/subiquity-curthooks.conf�CurtinConfigCurtHooksz8/var/log/installer/curtin-install/subiquity-extract.conf�CurtinConfigExtractz=/var/log/installer/curtin-install/subiquity-partitioning.conf�CurtinConfigPartitioningz(/var/log/installer/curtin-error-logs.tar�CurtinErrorz$/var/log/installer/curtin-errors.tarz(/var/log/installer/block/probe-data.json�	ProbeData�returncC�t�}|�d�S)N�userdata_raw)r�
get_ipath_cur��pathsrrr�_get_user_data_fileM�
r,cCr')N�data)r�	get_cpathr*rrr�_get_cloud_data_pathRr-r0c	Cs`|s	tjddd�}|jdddddd	d
�|jddd
dd�t�}|jdddddd�|�d�|S)a2Build or extend and arg parser for collect-logs utility.

    @param parser: Optional existing ArgumentParser instance representing the
        collect-logs subcommand which will be extended to support the args of
        this utility.

    @returns: ArgumentParser with proper argument configuration.
    �collect-logsz)Collect and tar all cloud-init debug info)�prog�descriptionz	--verbosez-v�countr�	verbosityzBe more verbose.)�action�default�dest�helpz	--tarfilez-tzcloud-init.tar.gzzOThe tarfile to create containing all collected logs. Default: cloud-init.tar.gz)r7r9z--include-userdataz-uF�
store_true�userdatazPOptionally include user-data from {0} which could contain sensitive information.)r7r6r8r9)�argparse�ArgumentParser�add_argumentr,�format)�parser�user_data_filerrr�
get_parserWs<	���	�rBcCs*dg}t��dkr|�ti�jd�|S)z>Return a list of files to ignore for /run/cloud-init directoryzhook-hotplug-cmdr�instance_data_sensitive)�os�getuid�appendr�lookups)�curdir�files�
ignored_filesrrr�_copytree_rundir_ignore_files�s
�rKc
Cstzt|�\}}Wn"ty*}zt|t|��td|d|�WYd}~dSd}~wwt||�td|d|�|S)zCHelper which runs a command and writes output or error to filename.zcollecting %s failed.
�Nz
collected %s
)rrr
r�_debug)�cmd�filename�msgr5�out�_�errr�_write_command_output_to_file�s��
rTcCs||krtj�|�dSdS�N)�sys�stderr�write)rP�levelr5rrrrM�s�rMcCs>tj�|�rt||�td|d|�dStd|d|�dS)Nzcollected file: %s
rLzfile %s did not exist
�)rDr�isfilerrM)r�out_dirr5rrr�
_collect_file�s
r]cCs�tD]}t||j�j}|��stt|��t|jt|�|�q|rBtD]}t||j�j}|��s8tt|��t|jt|�|�q$dSdS)z'Obtain subiquity logs and config files.N)	�INSTALLER_APPORT_FILESrr�parent�existsrrr]� INSTALLER_APPORT_SENSITIVE_FILES)�log_dir�include_userdatar5�src_file�destination_dirrrr�collect_installer_logs�s�rfrccCs�|rt��dkrtj�d�dStj�|�}t���	��
d�}tdd���}tj�||�}t
ddgtj�|d	�d
|�}t
gd�tj�|d�d
|�}|sQ|rO|nd}td|d|�t
dgtj�|d�d|�t
gd�tj�|d�d|�tD]}t|||�qv|r�t�}t|||�t|||�tj�|d�}	t|	�tj�t�r�ztjttj�|	d�td�Wn#tjy�}
ztj�d�tj�t|
�d�WYd}
~
nd}
~
wwtdtd|�ntdtd|�tj�tj�td���r	tt��}|���r	t�t|�t|t|���t|��tdd||�|d d!�g�Wd�n	1�s'wYWd�n	1�s7wYtj�d"|�dS)#z�Collect all cloud-init logs and tar them up into the provided tarfile.

    @param tarfile: The path of the tar-gzipped file to create.
    @param include_userdata: Boolean, true means include user-data.
    rzMTo include userdata, root user is required. Try sudo cloud-init collect-logs
rLzcloud-init-logs-%Y-%m-%dz/tmp)�dir�
cloud-initz	--version�versionzcloud-init --version)z
dpkg-queryz--showz-f=${Version}
rhzdpkg-versionzdpkg versionz
not-availablez!collected cloud-init version: %s
�dmesgz	dmesg.txtzdmesg output)�
journalctlz--boot=0z-oz
short-precisezjournal.txtzsystemd journal of current boot�run)�ignorez(Failed collecting file(s) due to error:
�
Nzcollected dir %s
zdirectory '%s' did not exist
�disabled�tar�czvf�/�z	Wrote %s
) rDrErVrWrXr�abspathr�utcnow�date�strftimer	�joinrTrM�CLOUDINIT_LOGSr]r,rfrr`�CLOUDINIT_RUN_DIR�shutil�copytreerK�Errorrrr0r
r�replace)�tarfilercr5rb�tmp_dirri�dpkg_ver�logrA�run_dirrS�cloud_data_dirrrr�collect_logs�s������
� ���

�
���Br�cCst|j|j|j�S)z:Handle calls to 'cloud-init collect-logs' as a subcommand.)r�rr;r5)�name�argsrrr�handle_collect_logs_args
sr�cCst�}td|���S)z4Tool to collect and tar all cloud-init related logs.r1)rBr��
parse_args)r@rrr�mainsr��__main__rU)r),�__doc__r<rDr{rVr�pathlibr�typingr�cloudinit.cmd.develr�cloudinit.helpersr�cloudinit.subprr�cloudinit.temp_utilsr	�cloudinit.utilr
rrr
ryrzrrar^rr,r0rBrKrTrMr]rf�boolr�r�r�r�exitrrrr�<module>s���	��������%
.
T�