Your IP : 216.73.216.52


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

U

�Ad�#�@sldZddlZddlZddlZddlZddlZddlZddlmZm	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+e,d�dd�Z-ee#e.fd�dd�Z/d eee)d�dd�Z0dd�Z1e2dk�rhe1�dS)!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�runningZdone�error�disabledN)	�__name__�
__module__�__qualname__�__doc__�NOT_RUN�RUNNING�DONE�ERROR�DISABLED�r r �6/usr/lib/python3/dist-packages/cloudinit/cmd/status.pyrsrc@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}cCsX|stjddd�}|jdtdddgddd	�|jd
ddd
dd�|jdddd
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�yamlz5Specify 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_argumentr3��parserr r r!�
get_parserLs6	���
�rC)�returncCsXt�}t|�}|jrX|jtjtjfkrX|jdkrFtj	�
d�tj	��t|�}td�q|j
|jj|jj|j|j|jd�}dt�|�i|d<d|d<|jdk�r|jr�dnd	}t|�d
|jj���|j�rB|jr�d|j�d�}nd	}ttj||jj|j|d��n>|jd
k�r(ttj|dddd��n|jdk�rBtt�|��|jtjk�rTdSdS)z4Handle calls to 'cloud-init status' as a subcommand.r6�.g�?)r1r-r,Zdetailr/r0�1ZschemasZ_schema_version�
�zstatus: z
last_update: )�prefixZ	boot_coder.r0r5�T)�,z: )�indentZ	sort_keysZ
separatorsr7�r)r
�get_status_details�waitr,rrr�format�sys�stdout�write�flushrr1r-�valuer.r/r0�copy�deepcopy�printZlong�TABULAR_LONG_TMPLr5�dumpsrr)�name�args�pathsZdetailsZdetails_dictrIr0r r r!�handle_status_argstsZ


�����r^cCs�t���}t�stj}d}n�d|kr0tj}d}n�tj�|�rNtj	}d�
|�}nfd|krbtj}d}nRtj�tj�|j
d��r�tj}d}n.tj�tj�|j
d	��r�tj}d
}n
tj}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&rPr%�join�run_dirr$r'r*)Zdisable_filer]Z
cmdline_partsZbootstatus_code�reasonr r r!�get_bootstatus�s,
rg)r]rDcCs�|pt�}tj}g}d}i}tj�|jd�}tj�|jd�}tt|�\}}|t	krXtj
}tj�|�r�tj�|�svtj}t
t|���di�}d}	t|���D]�\}
}|
dkr�|r�tj}d�|�}q�|
dkr�|d	kr�|}q�|}|�d
�\}}
}
|���dd�}q�t|t�r�|�|�dg��|�d��p&d}|�d
��p6d}|dk�rR|dk�rRtj}t||�}||	kr�|}	q�|�r�tj}d�|�}n|tjk�r�|	dk�r�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.
    rHzstatus.jsonzresult.jsonZv1rZstagezRunning in stage: {0}r1N� r/�start�finishedrGz%a, %d %b %Y %H:%M:%S %z)r
rrrarbrdrerg�CLOUDINIT_DISABLED_FILE�DISABLED_BOOT_CODESrrcrrr�get�sorted�itemsrP�	partition�lower�replace�
isinstance�dict�extend�maxrrrrr+)r]r,r/r1Z	status_v1Zstatus_fileZresult_filer-r.Zlatest_event�keyrUZds�_rirjZ
event_timer0r r r!rN�sp
�

���rNcCst�}t�td|����dS)z$Tool to report status of cloud-init.r,N)rCrQ�exitr^�
parse_argsrAr r r!�mainsr{�__main__)N)N)3rr>rV�enumr5rarQ�timerrr�typingrrrrr	r
rZ	cloudinitrZcloudinit.cmd.develr
Zcloudinit.distrosrZcloudinit.helpersrZcloudinit.utilrrrrk�unique�Enumrr"�	frozensetr$r%r&rlr+rYrC�intr^r3rgrNr{rr r r r!�<module>sB$
��		
(2!A