관리-도구
편집 파일: status.cpython-39.pyc
a ����i*�gF����������������������@���sH��d�Z�ddlZddlZddlZddlZddlZddlmZ�ddlm Z m Z mZ�ddlm Z mZmZmZmZmZ�ddlmZmZ�ddlmZ�ddlmZ�dd lmZ�dd lmZmZmZ�dZ ej!G�dd ��d ej"��Z#ej!G�dd��dej"��Z$ej!G�dd��dej"��Z%e&e%j'e%j(e%j)e%j*g�Z+G�dd��de�Z,dZ-ee.�e/e.d�dd�Z0d?dd�Z1e#e$ee.e.f�d�dd�Z2e,d�dd�Z3e4d �d!d"�Z5e/d �d#d$�Z6ee%e.f�d �d%d&�Z7e/d �d'd(�Z8e/e/d)�d*d+�Z9e/d �d,d-�Z:e#d �d.d/�Z;e.d �d0d1�Z<d2d3��Z=d4d5��Z>eeef�d �d6d7�Z?d@ee�e/e,d9�d:d;�Z@d<d=��ZAeBd>k�rDeA���dS�)AzGDefine 'status' utility and handler as part of cloud-init command line.�����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�������������������@���s ���e�Zd�ZdZdZdZdZdZdS�)� RunningStatusz=Enum representing user-visible cloud-init application status.znot started�runningZdone�disabledN)�__name__� __module__�__qualname__�__doc__�NOT_STARTED�RUNNING�DONE�DISABLED��r���r����8/usr/lib/python3.9/site-packages/cloudinit/cmd/status.pyr������s ���r���c�������������������@���s���e�Zd�ZdZdZdZdZdS�)�ConditionStatusz;Enum representing user-visible cloud-init condition status.�errorZdegradedZhealthyN)r���r���r���r����ERROR�DEGRADED�PEACHYr���r���r���r ���r!���%���s���r!���c�������������������@���s0���e�Zd�ZdZdZdZdZdZdZdZ dZ d Zd S�)� EnabledStatusz<Enum representing user-visible cloud-init boot status codes.zdisabled-by-generatorzdisabled-by-kernel-command-linezdisabled-by-marker-filez disabled-by-environment-variablezenabled-by-generatorzenabled-by-kernel-command-linezenabled-by-sysvinit�unknownN)r���r���r���r����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&���.���s���r&���c�������������������@���sr���e�Zd�ZU�eed<�eed<�eed<�eed<�ee�ed<�e eee�f�ed<�eed<�e e�ed<�e eef�ed <�d S�)� StatusDetails�running_status�condition_status�boot_status_code�description�errors�recoverable_errors�last_update� datasource�v1N)r���r���r���r����__annotations__r!���r&����strr���r���r ���r���r���r���r���r ���r0���F���s��� r0���z�extended_status: {extended_status} boot_status_code: {boot_code} {last_update}detail: {description} errors:{errors} recoverable_errors:{recoverable_errors})�systemctl_args�wait�returnc����������������C���sB���zt���dg|���j���W�S��t�jy:���|s.��td��Y�q�0�q�dS�)z-Query systemd with retries and return output.Z systemctl��������?N)r ����stdout�strip�ProcessExecutionErrorr���)r<���r=���r���r���r ����query_systemctlZ���s����rC���c�����������������C���sV���|�st�jddd�}�|�jdtg�d�ddd��|�jd d ddd d��|�jdddddd��|�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)�progr4���z--format)�json�tabular�yamlrG���z5Specify 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)�actionrK���rL���z-wz--waitz'Block waiting on cloud-init to complete)�argparse�ArgumentParser�add_argumentr;�����parserr���r���r ���� get_parseri���s4���� ��� �rT���)r���� conditionr>���c�����������������C���s^���|t�jkr d|j��d|�j���fS�|t�jkrR|�tjtjfv�rR|�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$���r���r���r���)r���rU���r���r���r ����translate_status����s���� �rX���)�detailsc����������� ��� ���C���s@��t�|j|j�\}}|j|jj|||j|j|j|j d�|j �}|�jdkr�d}|d�}t|��d|�����|�j r�|�d�r�d|d���d�}nd}|d �r�d d �|d ���nd}|d�r�dd�d d��|d����D����nd} ttj|d�||d�|d�||| d���n>|�jdk�r"ttj|dddd���n|�jdk�r<tt�|���dS�)zPrint status out to the CLI.)r8���r3���rD����extended_status�detailr5���r6���r7���rG�����rD���zstatus: r7���z last_update: � r5���� - z []r6���c�����������������S���s.���g�|�]&\}}|��d��d��dd��|D�����qS�)z: - r^���c�����������������S���s���g�|�]}|��d�d��qS�)r]���rV���)�replace)�.0�ir���r���r ���� <listcomp>���������z+print_status.<locals>.<listcomp>.<listcomp>)�join)r`����k�vr���r���r ���rb�������s�����z print_status.<locals>.<listcomp>z {}rZ���r3���r[���)rZ����prefixZ boot_coder4���r7���r5���r6���rF�������T)�,z: )�indentZ sort_keysZ separatorsrH���N)rX���r1���r2���r8���r3���rW���r4���r5���r6���r7���r9����format�printZlong�getrd����items�TABULAR_LONG_TMPLrF����dumpsr���) �argsrY���rD���rZ���Zdetails_dictrg����stater7���Z errors_outputZrecoverable_errors_outputr���r���r ����print_status����sn������ � ��� ��� �����rs���)r>���c�����������������C���s����t���}t||j�}|jr`|jtjtjfv�r`|jdkrJtj � d��tj ����t||j�}td��qt ||��|jtjkrzdS�|jtjkr�dS�dS�)z4Handle calls to 'cloud-init status' as a subcommand.rG����.r?�������rh���r���)r����get_status_detailsr=���r1���r���r���r���rk����sysr@����write�flushr���rs���r2���r!���r#���r$���)�namerq����pathsrY���r���r���r ����handle_status_args����s$����� r|���c�����������������C���s4���zt�dg|�d�}W�n�tjy*���d}Y�n0�d|v�S�)z?Return whether cloud-init is disabled via environment variable.zshow-environment�r=���r\����cloud-init=disabled)rC���r ���rB���)r=����envr���r���r ����_disabled_via_environment��s ���� r����c�����������������C���s����t������}t��stj}d}n�d|v�r0tj}d}n�tj�|��rNtj }d� |��}n�d|v�rbtj}d}n�dtj� dd�v�s�t��r�t|d �r�tj}d }nRtj�tj�|jd��r�tj}d}n.tj�tj�|jd ��r�tj}d}n tj}d}||fS�)aX��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. @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=disabledZKERNEL_CMDLINEr\���r}���zNCloud-init disabled by environment variable KERNEL_CMDLINE=cloud-init=disabledr���z+Cloud-init disabled by cloud-init-generator�enabledz2Cloud-init enabled by systemd cloud-init-generatorz'Systemd generator may not have run yet.)r����splitr���r&���r.���r-����os�path�existsr*���rk���r)����environrm���r����r+���rd����run_dirr(���r,���r/���)Zdisable_filer{���r=���Z cmdline_partsZbootstatus_code�reasonr���r���r ����get_bootstatus��s<���� ���r����c�������������������C���s���t�t���jtvS�)N)rv���r���r3����DISABLED_BOOT_CODESr���r���r���r ����is_cloud_init_enabled5��s���� ��r����)r=���r>���c�����������������C���s����dD���]�}zt�dd|g|�d�}W�n@�tjy`�}�z&td|j���tjd��W�Y�d}~�dS�d}~0�0�td d ��|���D���}|d��d�s�|d�d ks��dS�|d�dkr�|d�dkr�qn|d�dkr�|d�dkr��dS�n |d�dks�|d�dk��r��dS��dS�dS�)z2Return if systemd units report a cloud-init error.)zcloud-final.servicezcloud-config.servicezcloud-init.servicezcloud-init-local.serviceZshowz5--property=ActiveState,UnitFileState,SubState,MainPIDr}���z^Failed to get status from systemd. Cloud-init status may be inaccurate. Error from systemctl: )�fileNFc�����������������S���s ���g�|�]}d�d��|��d�D���qS�)c�����������������S���s���g�|�]}|�����qS�r���)rA���)r`����xr���r���r ���rb���W��rc���z-systemd_failed.<locals>.<listcomp>.<listcomp>�=)r����)r`����rr���r���r ���rb���W��rc���z"systemd_failed.<locals>.<listcomp>Z UnitFileStater����ZstaticTZActiveStateZactiveZSubStateZexitedr���ZMainPID�0Zfailed) rC���r ���rB���rl����stderrrw����dict� splitlines� startswith)r=���Zservicer@����eZstatesr���r���r ����systemd_failed<��sJ���� �� ���� � � �r����c�����������������C���s���t�j�|��ot�j�|��S�)z%Return True if cloud-init is running.)r����r����r����)�status_file�result_filer���r���r ���� is_runningv��s����r����c�����������������C���s6���|t�v�rtjS�t|�|�rtjS�|dkr,tjS�tjS�dS�)z(Return the running status of cloud-init.r���N)r����r���r���r����r���r���r���)r����r����r3����latest_eventr���r���r ����get_running_status{��s���� r����c�����������������C���s4���|���dd�}|r0|�d�\}}}|����dd�}|S�)zyGet the datasource from status.json. Return a lowercased non-prefixed version. So "DataSourceEc2" becomes "ec2" r8���r\���rV���)rm���� partition�lowerr_���)� status_v1r8���Zds�_r���r���r ����get_datasource���s ����r����c�����������������C���s2���|���d�}|r|S�|���d�r*d|�d����S�|S�dS�)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. r8���ZstagezRunning in stage: N)rm���)r�����boot_descriptionr8���r���r���r ����get_description���s���� r����c�����������������C���s@���d}|�����D�].}t|t�rt||�d�p*d|�d�p6d�}q|S�)z,Return the latest event time from status_v1.r����start�finished)�values� isinstancer�����maxrm���)r����r����� stage_infor���r���r ����get_latest_event���s���� �r����c�����������������C���s����g�}i�}t�|�����D�]j\}}t|t�r|�|�dg����|�di��}|���D�]0}||vrjt||��||<�qL||��||���qLq||fS�)z>Return a list of errors and recoverable_errors from status_v1.r5���r6���)�sortedrn���r����r�����extendrm����keysr���)r����r5���r6���Z_keyr����Zcurrent_recoverable_errorsZerr_typer���r���r ���� get_errors���s"���� �� �r����F)r{���r=���r>���c�������������� ���C���s��t�j}|�pt��}�tj�|�jd�}tj�|�jd�}tt|�|�\}}i�}tj� |�rdt t|���di��}t |�}t||�} t|�} | r�tdt| ��nd}t|�\}} |r�t�j}n | r�t�j}t|||| �}|tjkr�t��r�t|d�r�tj}t�j}d} |�d��|�d d ��t|||| || |||� S�)a��Return 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.jsonr9���z%a, %d %b %Y %H:%M:%S %zr\���r}���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.r8���N)r!���r%���r���r����r����rd���r����r�����CLOUDINIT_DISABLED_FILEr����r���r���rm���r����r����r����r���r���r����r#���r$���r����r���r���r���r����r����append�popr0���)r{���r=���r2���r����r����r3���r����r����r8���r4���r����r7���r5���r6���r1���r���r���r ���rv������sb���� � ��������rv���c������������������C���s���t���}�t�td|�������dS�)z$Tool to report status of cloud-init.rD���N)rT���rw����exitr|���� parse_argsrR���r���r���r ����main��s����r�����__main__)N)NF)Cr���rO����enumrF���r����rw����copyr����timer���r���r����typingr���r���r���r ���r ���r���Z cloudinitr���r ���Zcloudinit.cmd.develr���Zcloudinit.distrosr���Zcloudinit.helpersr���Zcloudinit.utilr���r���r���r�����unique�Enumr���r!���r&���� frozensetr(���r)���r*���r+���r����r0���ro���r;����boolrC���rT���rX���rs����intr|���r����r����r����r����r����r����r����r����r����r����rv���r����r���r���r���r���r ����<module>���st��� �� � ) �B *:� ���G