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: //usr/lib/python3/dist-packages/cloudinit/cmd/__pycache__/status.cpython-310.pyc
o

�Ad�#�@spdZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
ddlmZm
Z
mZmZmZmZmZddlmZddlmZddlmZddlmZdd	lmZmZmZd
Zej Gdd�dej!��Z"ej Gd
d�dej!��Z#e$e#j%e#j&e#j'g�Z(Gdd�de�Z)dZ*ddd�Z+de,fdd�Z-dee#e.ffdd�Z/ddeede)fdd�Z0dd�Z1e2dkr�e1�dSdS) zFDefine 'status' utility and handler as part of cloud-init commandline.�N)�gmtime�sleep�strftime)�Any�Dict�List�
NamedTuple�Optional�Tuple�Union)�safeyaml)�read_cfg_paths)�uses_systemd)�Paths)�get_cmdline�	load_file�	load_jsonz/etc/cloud/cloud-init.disabledc@s$eZdZdZdZdZdZdZdZdS)�UXAppStatusz=Enum representing user-visible cloud-init application status.znot run�running�done�error�disabledN)	�__name__�
__module__�__qualname__�__doc__�NOT_RUN�RUNNING�DONE�ERROR�DISABLED�r!r!�6/usr/lib/python3/dist-packages/cloudinit/cmd/status.pyrsrc@s,eZdZdZdZdZdZdZdZdZ	dZ
d	S)
�UXAppBootStatusCodez<Enum representing user-visible cloud-init boot status codes.zdisabled-by-generatorzdisabled-by-kernel-cmdlinezdisabled-by-marker-filezenabled-by-generatorzenabled-by-kernel-cmdlinezenabled-by-sysvinit�unknownN)rrrr�DISABLED_BY_GENERATOR�DISABLED_BY_KERNEL_CMDLINE�DISABLED_BY_MARKER_FILE�ENABLED_BY_GENERATOR�ENABLED_BY_KERNEL_CMDLINE�ENABLED_BY_SYSVINIT�UNKNOWNr!r!r!r"r#'sr#c@sFeZdZUeed<eed<eed<eeed<eed<eeed<dS)�
StatusDetails�status�boot_status_code�description�errors�last_update�
datasourceN)	rrrr�__annotations__r#�strrr	r!r!r!r"r,=s
r,z@boot_status_code: {boot_code}
{last_update}detail:
{description}cCsV|s	tjddd�}|jdtgd�ddd�|jd	d
ddd
d�|jdddddd�|S)a%Build or extend an arg parser for status utility.

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

    @returns: ArgumentParser with proper argument configuration.
    r-zReport run status of cloud init)�progr/z--format)�json�tabular�yamlr7z5Specify output format for cloud-id (default: tabular))�type�choices�default�helpz-lz--long�
store_trueFzJReport long format of statuses including run stage name and error messages)�actionr;r<z-wz--waitz'Block waiting on cloud-init to complete)�argparse�ArgumentParser�add_argumentr4��parserr!r!r"�
get_parserLs4	���
�rD�returncCs^t�}t|�}|jr4|jtjtjfvr4|jdkr#tj	�
d�tj	��t|�}td�|jtjtjfvs|j
|jj|jj|j|j|jd�}dt�|�i|d<d|d<|jdkr�|jr\dnd	}t|�d
|jj���|jr�|jrwd|j�d�}nd	}ttj||jj|j|d��n|jd
kr�ttj|dddd��n|jdkr�tt�|��|jtjkr�dSdS)z4Handle calls to 'cloud-init status' as a subcommand.r7�.g�?)r2r.r-�detailr0r1�1�schemas�_schema_version�
�zstatus: z
last_update: )�prefix�	boot_coder/r1r6�T)�,z: )�indent�	sort_keys�
separatorsr8�r)r
�get_status_details�waitr-rrr�format�sys�stdout�write�flushrr2r.�valuer/r0r1�copy�deepcopy�print�long�TABULAR_LONG_TMPLr6�dumpsrr)�name�args�paths�details�details_dictrMr1r!r!r"�handle_status_argstsX

��
���
��
rhcCs�t���}t�stj}d}||fSd|vrtj}d}||fStj�|�r0tj	}d�
|�}||fSd|vr=tj}d}||fStj�tj�|j
d��rRtj}d}||fStj�tj�|j
d	��rgtj}d
}||fStj}d}||fS)a
Report whether cloud-init current boot status

    @param disable_file: The path to the cloud-init disable file.
    @param paths: An initialized cloudinit.helpers.Paths object.
    @returns: A tuple containing (code, reason) about cloud-init's status and
    why.
    zCloud-init enabled on sysvinitzcloud-init=enabledz<Cloud-init enabled by kernel command line cloud-init=enabledzCloud-init disabled by {0}zcloud-init=disabledz;Cloud-init disabled by kernel parameter cloud-init=disabledrz+Cloud-init disabled by cloud-init-generator�enabledz2Cloud-init enabled by systemd cloud-init-generatorz'Systemd generator may not have run yet.)r�splitrr#r*r)�os�path�existsr'rWr&�join�run_dirr%r(r+)�disable_filere�
cmdline_parts�bootstatus_code�reasonr!r!r"�get_bootstatus�s8
��

�
���rtrecCs�|pt�}tj}g}d}i}tj�|jd�}tj�|jd�}tt|�\}}|t	vr,tj
}tj�|�rEtj�|�s;tj}t
t|���di�}d}	t|���D]c\}
}|
dkr`|r_tj}d�|�}qM|
dkr~|d	urk|}qM|}|�d
�\}}
}
|���dd�}qMt|t�r�|�|�dg��|�d�p�d}|�d
�p�d}|dkr�|dkr�tj}t||�}||	kr�|}	qM|r�tj}d�|�}n|tjkr�|	dkr�tj}|	r�tdt|	��nd}t||||||�S)z�Return a dict with status, details and errors.

    @param paths: An initialized cloudinit.helpers.paths object.

    Values are obtained from parsing paths.run_dir/status.json.
    rLzstatus.jsonzresult.json�v1r�stagezRunning in stage: {0}r2N� r0�start�finishedrKz%a, %d %b %Y %H:%M:%S %z)r
rrrkrlrnrort�CLOUDINIT_DISABLED_FILE�DISABLED_BOOT_CODESr rmrrr�get�sorted�itemsrW�	partition�lower�replace�
isinstance�dict�extend�maxrrrrr,)rer-r0r2�	status_v1�status_file�result_filer.r/�latest_event�keyr\�ds�_rxry�
event_timer1r!r!r"rU�sh
�
�

����rUcCst�}t�td|����dS)z$Tool to report status of cloud-init.r-N)rDrX�exitrh�
parse_argsrBr!r!r"�mainsr��__main__)N)3rr?r]�enumr6rkrX�timerrr�typingrrrrr	r
r�	cloudinitr�cloudinit.cmd.develr
�cloudinit.distrosr�cloudinit.helpersr�cloudinit.utilrrrrz�unique�Enumrr#�	frozensetr%r&r'r{r,rarD�intrhr4rtrUr�rr!r!r!r"�<module>sF$
��		
(2!A
�