HOME


Mini Shell 1.0
DIR: /lib/python3/dist-packages/cloudinit/cmd/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/cmd/__pycache__/status.cpython-312.pyc
�

�f#F��0�dZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
mZddlm
Z
mZmZmZmZmZddlmZmZddlmZddlmZdd	lmZdd
lmZmZmZdZ ejBGd�d
ejD��Z#ejBGd�dejD��Z$ejBGd�dejD��Z%e&e%jNe%jPe%jRe%jTg�Z+Gd�de�Z,dZ-dee.de/de.fd�Z0d.d�Z1de#de$dee.e.ffd�Z2de,fd�Z3de4fd�Z5de/fd �Z6dee%e.ffd!�Z7de/fd"�Z8de/de/fd#�Z9de/fd$�Z:de#fd%�Z;de.fd&�Z<d'�Z=d(�Z>deeeffd)�Z?	d/d*eede/de,fd+�Z@d,�ZAeBd-k(reA�yy)0zFDefine 'status' utility and handler as part of cloud-init commandline.�N)�deepcopy)�gmtime�sleep�strftime)�Any�Dict�List�
NamedTuple�Optional�Tuple)�safeyaml�subp)�read_cfg_paths)�uses_systemd)�Paths)�get_cmdline�	load_json�load_text_filez/etc/cloud/cloud-init.disabledc� �eZdZdZdZdZdZdZy)�
RunningStatusz=Enum representing user-visible cloud-init application status.znot started�running�done�disabledN)�__name__�
__module__�__qualname__�__doc__�NOT_STARTED�RUNNING�DONE�DISABLED���6/usr/lib/python3/dist-packages/cloudinit/cmd/status.pyrrs��G��K��G��D��Hr#rc��eZdZdZdZdZdZy)�ConditionStatusz;Enum representing user-visible cloud-init condition status.�error�degraded�healthyN)rrrr�ERROR�DEGRADED�PEACHYr"r#r$r&r&%s��E��E��H�
�Fr#r&c�0�eZdZdZdZdZdZdZdZdZ	dZ
d	Zy
)�
EnabledStatusz<Enum representing user-visible cloud-init boot status codes.zdisabled-by-generatorzdisabled-by-kernel-cmdlinezdisabled-by-marker-filez disabled-by-environment-variablezenabled-by-generatorzenabled-by-kernel-cmdlinezenabled-by-sysvinit�unknownN)rrrr�DISABLED_BY_GENERATOR�DISABLED_BY_KERNEL_CMDLINE�DISABLED_BY_MARKER_FILE�DISABLED_BY_ENV_VARIABLE�ENABLED_BY_GENERATOR�ENABLED_BY_KERNEL_CMDLINE�ENABLED_BY_SYSVINIT�UNKNOWNr"r#r$r.r..s4��F�3��!=��7��A��1�� ;��/���Gr#r.c��eZdZUeed<eed<eed<eed<eeed<e	eeefed<eed<e
eed<e	ee	fed	<y
)�
StatusDetails�running_status�condition_status�boot_status_code�description�errors�recoverable_errors�last_update�
datasource�v1N)rrrr�__annotations__r&r.�strr	rrr"r#r$r9r9FsU��!�!�%�%�#�#�����I���S�$�s�)�^�,�,�����
���S�$�Y��r#r9z�extended_status: {extended_status}
boot_status_code: {boot_code}
{last_update}detail: {description}
errors:{errors}
recoverable_errors:{recoverable_errors}�systemctl_args�wait�returnc��		tjdg|��jj�S#tj$r|s�t	d�YnwxYw�Y)z-Query systemd with retries and return output.�	systemctl��?)r�stdout�strip�ProcessExecutionErrorr)rErFs  r$�query_systemctlrNZsY���	��9�9�k�;�N�;�<�C�C�I�I�K�K���)�)�	����$�K�	��s�/3�!A�Ac���|stjdd��}|jdtgd�dd��|jd	d
ddd
��|jddddd��|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.
    �statuszReport run status of cloud init)�progr=z--format)�json�tabular�yamlrSz5Specify 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)�actionrWrXz-wz--waitz'Block waiting on cloud-init to complete)�argparse�ArgumentParser�add_argumentrD��parsers r$�
get_parserr`is�����(�(��'H�
������
�+��
D����������
�
�	��������
6����Mr#r�	conditionc�J�|tjk(rd|j�d|j��fS|tjk(rI|tj
tjfvr'|j|j�d|j��fS|j|jfS)z�Translate running and condition status to human readable strings.

    Returns (status, extended_status).
    Much of this is for backwards compatibility
    r'z - � )r&r*�valuer+rr r)rras  r$�translate_statusre�s����O�)�)�)��9�?�?�+�3�w�}�}�o�>�>�>�	�o�.�.�	.�7�������?�4��}�}���� 1��7�=�=�/�B�B�B��=�=�'�-�-�'�'r#�detailsc��t|j|j�\}}|j|jj
|||j|j|j|jd�|j�}|jdk(�r|jrdnd}|d}t|�d|���|jr�|jd�r
d|d�d�}nd}|d	rd
d
j!|d	�znd}|drmddj!|dj#�D�	�
�cgc]:\}	}
|	�d
�d
j!|
D�cgc]}|j%dd���c}�z��<c}}
}	�znd}tt&j|d||d|d|||���yy|jdk(r#tt)j*|ddd���y|jdk(rtt-j*|��yycc}wcc}}
}	w)zPrint status out to the CLI.)rAr<rP�extended_status�detailr>r?r@rS�
�rPzstatus: r@z
last_update: r>z
	- z []r?z:
	- rcz {}rhr<ri)rh�prefix�	boot_coder=r@r>r?rR�T)�,z: )�indent�	sort_keys�
separatorsrTN)rer:r;rAr<rdr=r>r?r@rB�formatrF�print�long�get�join�items�replace�TABULAR_LONG_TMPLrR�dumpsr
)
�argsrfrPrh�details_dictrl�stater@�
errors_output�k�v�i�recoverable_errors_outputs
             r$�print_statusr��s9��.����� 8� 8���F�O��(�(�#�4�4�:�:��*��%�%��.�.�%�8�8��*�*�
$��*�*�
$�L��{�{�i���������X�&��
������(�)��9�9����
�.� -�l�=�.I�-J�"�M�� �� ��)��8�=�=��h�)?�@�@��
� � 4�5���)�)�%1�1E�$F�$L�$L�$N���!�A�q��#�W�
�"�-�-�q�(I�!����4��)=�(I�J�K�����
&�
�!�(�(�$0�1B�$C�!�*�+=�>� ,�X� 6� +�(�'@�)��

�-�B
����	�
��J�J��Q�$�;�
�	
�

����	�
�h�n�n�\�*�+�
��1)J��s�%H�H�H�Hc�x�t�}t||j�}|jr�|jtj
tjfvr�|jdk(r=tjjd�tjj�t||j�}td�|jtj
tjfvr��t||�|jtj k(ry|jtj"k(ryy)z4Handle calls to 'cloud-init status' as a subcommand.rS�.rJ�rnr)r�get_status_detailsrFr:rrrrs�sysrK�write�flushrr�r;r&r*r+)�namer|�pathsrfs    r$�handle_status_argsr��s���
��E� ���	�	�2�G��y�y��$�$��%�%��!�!�)
�
��{�{�i�'��
�
� � ��%��
�
� � �"�(���	�	�:�G��$�K��$�$��%�%��!�!�)
�
���w�����?�#8�#8�8��	�	!�	!�_�%=�%=�	=��r#c�d�	tdg|��}d|vS#tj$rd}Yd|vSwxYw)z?Return whether cloud-init is disabled via environment variable.zshow-environment�rFrk�cloud-init=disabled)rNrrM)rF�envs  r$�_disabled_via_environmentr�sK����1�2��>��!�C�'�'���%�%���� �C�'�'��s��/�/c��t�j�}t�stj}d}||fSd|vrtj
}d}||fStjj|�r%tj}dj|�}||fSd|vrtj}d}||fSdtjjdd�vst�r"t|�	�rtj}d
}||fStjjtjj!|j"d��rtj$}d}||fStjjtjj!|j"d
��rtj&}d}||fStj(}d}||fS)aXReport 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.
    @param wait: If user has indicated to wait for cloud-init to complete.
    @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}r�z;Cloud-init disabled by kernel parameter cloud-init=disabled�KERNEL_CMDLINErkr�zNCloud-init disabled by environment variable KERNEL_CMDLINE=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.r6r5�os�path�existsr2rsr1�environrvr�r3rw�run_dirr0r4r7)�disable_filer�rF�
cmdline_parts�bootstatus_code�reasons      r$�get_bootstatusr�s��� �M�'�'�)�M��>�'�;�;��1��6
�V�$�$�5
��	.�'�A�A��O��0
�V�$�$�/
������	%�'�?�?��-�4�4�\�B��*
�V�$�$�)
�-�	/�'�B�B��N��$
�V�$�$�#
�"�*�*�.�.�1A�2�"F�	F���4�$�?�'�@�@��
1�	�
�V�$�$�
����������U�]�]�J�?�	@�'�=�=��>��
�V�$�$�

����������U�]�]�I�>�	?�'�<�<��E��
�V�$�$�(�/�/��:���V�$�$r#c�H�tt��jtvS�N)r�rr<�DISABLED_BOOT_CODESr"r#r$�is_cloud_init_enabledr�5s ���>�+�,�=�=�"�	#�r#c�0�dD]�}	tdd|g|��}t
|j�D��cgc]/}|jd	�D�cgc]}|j���c}��1c}}�}|d
jd�s
|d
dk(sy
|ddk(r|ddk(r��|ddk(r
|ddk(ryy|ddk(s|ddk(ry
yy#tj$r3}td|j��t
j��Yd}~yd}~wwxYwcc}wcc}}w)z2Return if systemd units report a cloud-init error.)zcloud-final.servicezcloud-config.servicezcloud-init.servicezcloud-init-local.service�showz5--property=ActiveState,UnitFileState,SubState,MainPIDr�z^Failed to get status from systemd. Cloud-init status may be inaccurate. Error from systemctl: )�fileNF�=�
UnitFileStater��staticT�ActiveState�active�SubState�exitedr�MainPID�0�failed)rNrrMrt�stderrr��dict�
splitlinesr�rL�
startswith)rF�servicerK�e�r�x�statess       r$�systemd_failedr�<sK���2��	�$��K���
�
�F�"�8>�8I�8I�8K�L�1������
.�A�a�g�g�i�
.�L�
��
�?�#�.�.�y�9��o�&�(�2��
�M�
"�h�
.��j�!�X�-���
�#�y�0�V�I�5F�#�5M���
�=�!�X�-��
�1C�x�1O���e2�j��M�)�)�	��)�)*���
�4��Z�Z�	
���	��/��Ls.�C�D�D
�D�D
�(D�D
�
Dc��tjj|�xr tjj|�S)z%Return True if cloud-init is running.)r�r�r�)�status_file�result_files  r$�
is_runningr�vs*��
�7�7�>�>�+�&�J�r�w�w�~�~�k�/J�+J�Jr#c��|tvrtjSt||�rtjS|dkDrtj
StjS)z(Return the running status of cloud-init.r)r�rr!r�rr r)r�r�r<�latest_events    r$�get_running_statusr�{sO���.�.��%�%�%�	�K��	-��$�$�$�	��	��!�!�!��(�(�(r#c��|jdd�}|r5|jd�\}}}|j�jdd�}|S)zyGet the datasource from status.json.

    Return a lowercased non-prefixed version. So "DataSourceEc2" becomes "ec2"
    rArkrc)rv�	partition�lowerry)�	status_v1rA�ds�_s    r$�get_datasourcer��sK��
���|�R�0�J���'�'��,���A�q��X�X�Z�'�'��b�9�
��r#c�b�|jd�}|r|S|jd�rd|d��S|S)z�Return a description of the current status.

    If we have a datasource, return that. If we're running in a particular
    stage, return that. Otherwise, return the boot_description.
    rA�stagezRunning in stage: )rv)r��boot_descriptionrAs   r$�get_descriptionr��s@�����|�,�J����	���w�	�#�I�g�$6�#7�8�8��r#c��d}|j�D]F}t|t�s�t||j	d�xsd|j	d�xsd�}�H|S)z,Return the latest event time from status_v1.r�start�finished)�values�
isinstancer��maxrv)r�r��
stage_infos   r$�get_latest_eventr��s`���L��&�&�(��
��j�$�'������w�'�,�1����z�*�/�a��L���r#c�`�g}i}t|j��D]�\}}t|t�s�|j	|jdg��|jdi�}|j
�D]/}||vrt||�||<�||j	||��1��||fS)z>Return a list of errors and recoverable_errors from status_v1.r>r?)�sortedrxr�r��extendrv�keysr)r�r>r?�_keyr��current_recoverable_errors�err_types       r$�
get_errorsr��s���
�F���"�9�?�?�#4�5����j��j�$�'��M�M�*�.�.��2�6�7�*4���$�b�*�&�7�;�;�=�
���#5�5�3;�2�8�<�4�&�x�0�'�x�0�7�7�2�8�<��

��"�%�%�%r#r�c��tj}|xs
t�}tjj|jd�}tjj|jd�}tt||�\}}i}tjj|�r$tt|��jdi�}t|�}t||�}	t|�}
|
rt!dt#|
��nd}t%|�\}}
|rtj&}n|
rtj(}t+||||
�}|t,j.k(rIt1�r?t3|��r3t,j4}tj&}d}	|j7d�|j9d	d
�t;||||	||
|||�	S)aReturn a dict with status, details and errors.

    @param paths: An initialized cloudinit.helpers.paths object.
    @param wait: If user has indicated to wait for cloud-init to complete.

    Values are obtained from parsing paths.run_dir/status.json.
    zstatus.jsonzresult.jsonrBz%a, %d %b %Y %H:%M:%S %zrkr�z"Failed due to systemd unit failurez�Failed due to systemd unit failure. Ensure all cloud-init services are enabled, and check 'systemctl' or 'journalctl' for more information.rAN)r&r,rr�r�rwr�r��CLOUDINIT_DISABLED_FILEr�rrrvr�r�r�rrr�r*r+r�rrrr�r �append�popr9)r�rFr;r�r�r<r�r�rAr=r�r@r>r?r:s               r$r�r��s���'�-�-���%�^�%�E��'�'�,�,�u�}�}�m�<�K��'�'�,�,�u�}�}�m�<�K�)7����*�&��&��I�	�w�w�~�~�k�"��n�[�9�:�>�>�t�R�H�	��	�*�J�!�)�-=�>�K�#�I�.�L��	�+�V�L�-A�B�
��",�I�!6��F��
�*�0�0��	�*�3�3��'��[�"2�L��N�
	�-�/�/�/��N���%�&�+�+��*�0�0��:���
�
�
$�	
��M�M�,��%�����������
�
r#c�r�t�}tjtd|j	���y)z$Tool to report status of cloud-init.rPN)r`r��exitr��
parse_argsr^s r$�mainr�s&��
�\�F��H�H�
��&�*;�*;�*=�
>�?r#�__main__r�)NF)Crr[�enumrRr�r��copyr�timerrr�typingrrr	r
rr�	cloudinitr
r�cloudinit.cmd.develr�cloudinit.distrosr�cloudinit.helpersr�cloudinit.utilrrrr��unique�Enumrr&r.�	frozensetr0r1r2r3r�r9rzrD�boolrNr`rer��intr�r�r�r�r�r�r�r�r�r�r�r�r�rr"r#r$�<module>r�s+��M����	�
��(�(�?�?�$�.�*�#�A�A�:������D�I�I��
������d�i�i��
�����
�D�I�I�
�
�
� ��+�+��0�0��-�-��.�.�	���	�J�	�+�����I����	�	�%�P(�
�(�'6�(�
�3��8�_�(�(?,�
�?,�D
�c�
�6(�t�(�'%��}�c�7I�1J�'%�T�t��7��7�$�7�tK�D�K�
)��)�	��	� �
�&�U�4��:�.�&�216�D��E�?�D�)-�D��D�N@��z���F�r#