Current File : //usr/lib/python3/dist-packages/uaclient/cli/__pycache__/cli_util.cpython-312.pyc
�

��JhQ �
��ddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
mZmZm
Z
mZmZmZmZmZmZddlmZddlmZddlmZmZddlmZdd	lmZej>�Z d
Z!Gd�dejD�Z#d
�Z$de%fd�Z&d"d�Z'd�Z(d�Z)d"d�Z*d�Z+d�Z,d�Z-deddfd�Z.dedede/dee/ddf
d�Z0d�Z1d#dee/fd �Z2d!�Z3y)$�N��wraps)�Optional)
�actions�api�daemon�entitlements�event_logger�
exceptions�lock�messages�status�util)�CVE_OR_USN_REGEX)�_is_attached)�
AptProxyScope�setup_apt_proxy)�UAConfig)�
machine_tokenzc	�H�eZdZdefd�Zdededeedeefd�Zdefd	�Z	y
)�CLIEnableDisableProgress�
assume_yesc�"�||_||_y�N)�is_interactiver)�selfrs  �7/usr/lib/python3/dist-packages/uaclient/cli/cli_util.py�__init__z!CLIEnableDisableProgress.__init__"s��",�n���$����total_steps�
done_steps�previous_step_message�current_step_messagec� �|�t|�yyr)�print)rr r!r"r#s     r�progressz!CLIEnableDisableProgress.progress&s�� �+��&�'�,r�eventc��|dk(rt|�y|dk(r5tj||j�st	j
��yy)N�info�message_operation)r%r�handle_message_operationsrr�PromptDeniedError)rr'�payloads   r�	_on_eventz"CLIEnableDisableProgress._on_event1sG���F�?��'�N�
�)�
)��1�1�'�4�?�?�K� �2�2�4�4�L�*rN)
�__name__�
__module__�__qualname__�boolr�intr�strr&r.�rrrr!sO��%�d�%�	(��	(��		(�
 (��}�	(�'�s�m�
	(�5�s�5rrc��yrr5)�args�kwargss  r�_null_printr99s��r�json_outputc��|rtStSr)r9r%)r:s r�&create_interactive_only_print_functionr<=s������rc����fd�}|S)z1Decorator asserting exclusive access to lock filec�2���t����fd��}|S)Nc�v��tj�d��5�|d|i|��}ddd�|S#1swYSxYw)N�)�lock_holder�
sleep_time�cfg)r�	RetryLock)rCr7r8�retval�frAs    ��r�new_fz0assert_lock_file.<locals>.wrapper.<locals>.new_fHs?������K�A�F�
5��D�4�c�4�V�4��
5��M�
5��M�s�.�8r)rFrGrAs` �r�wrapperz!assert_lock_file.<locals>.wrapperGs ���	�q��	�
�	�
�rr5)rArHs` r�assert_lock_filerIDs�����Nrc�.��t���fd��}|S)zDecorator asserting root userc�d��tj�stj���|i|��Sr)r�we_are_currently_rootr�NonRootUserError)r7r8rFs  �rrGzassert_root.<locals>.new_fVs.����)�)�+��-�-�/�/��d�%�f�%�%rr�rFrGs` r�assert_rootrOSs"����1�X�&��&��Lrc�.��t���fd��}|S)z>Decorator to verify if correct params are used for json formatc���|s�|g|��i|��S|jdk(r |jstj���|g|��i|��S)N�json)�formatrr�CLIJSONFormatRequireAssumeYes)�cmd_argsr7r8rFs   �rrGz&verify_json_format_args.<locals>.new_fcsS�����X�/��/��/�/��?�?�f�$�X�-@�-@��:�:�<�<��X�/��/��/�/rrrNs` r�verify_json_format_argsrV`s"����1�X�0��0��Lrc����fd�}|S)z�Decorator asserting attached config.
    :param msg_function: Optional function to generate a custom message
    if raising an UnattachedError
    c�2���t����fd��}|S)Nc���t|�js<�r&t|dd�}t|dd�}�|||��ntj���|fd|i|��S)N�command��service)rZ�
service_namesrCrC)r�is_attached�getattrr�UnattachedError)r7rCr8rZr]rF�raise_custom_error_functions     ��rrGz/assert_attached.<locals>.wrapper.<locals>.new_fwse�����$�0�0�.�%�d�I�r�:�G�$+�D�)�R�$@�M�/� '�}�#��%�4�4�6�6��T�-�s�-�f�-�-rr)rFrGras` �rrHz assert_attached.<locals>.wrappervs ���	�q��
	.�
�
	.��rr5)rarHs` r�assert_attachedrbps���� �Nrc�.��t���fd��}|S)z&Decorator asserting unattached config.c����t|�jrDtj�}t	j
|jjdd�����|fd|i|��S)N�namer[)�account_namerC)rr^r�get_machine_token_filer�AlreadyAttachedError�account�get)r7rCr8�machine_token_filerFs    �rrGz"assert_not_attached.<locals>.new_f�s`������(�(�!.�!E�!E�!G���1�1�/�7�7�;�;�F�B�G��
���)�3�)�&�)�)rrrNs` r�assert_not_attachedrl�s"����1�X�*��*��Lrc����fd�}|S)Nc�2���t����fd��}|S)Nc���t|dd�}tjt|�st	j
|�����|fd|i|��S)N�security_issuer[)�issue�cmdrC)r_�re�matchrr�InvalidSecurityIssueIdFormat)r7rCr8rprrrFs    ��rrGz@assert_vulnerability_issue_valid.<locals>.wrapper.<locals>.new_f�sQ���$�T�+;�R�@�N��8�8�,�n�=� �=�=�(����
�T�-�s�-�f�-�-rr)rFrGrrs` �rrHz1assert_vulnerability_issue_valid.<locals>.wrapper�s ���	�q��	.�
�	.��rr5)rrrHs` r� assert_vulnerability_issue_validrv�s�����Nrc�J�tj||��\}}|r9|r7tjdj	|�|dj	|�d���|r&tj
dj	|�|���tj|dj	|�d���)z�Raises a custom error for enable/disable commands when unattached.

    Takes into consideration if the services exist or not, and notify the user
    accordingly.)�namesrCz, r[)�
valid_service�	operation�invalid_service�service_msg)ryrz)rzr{r|)r	�get_valid_entitlement_namesr�UnattachedMixedServicesError�join�UnattachedValidServicesError�UnattachedInvalidServicesError)rZr]rC�entitlements_found�entitlements_not_founds     r�&_raise_enable_disable_unattached_errorr��s���	�0�0�}�#�N�����4��5�5��)�)�$6�7�� �I�I�&<�=��	
�	
�
��5�5��)�)�$6�7�7�
�	
��7�7�� �I�I�&<�=��
�	
rrC�returnc��tj|�}|j}|r4tj	t
jj|���n#tj	t
j�tj�tj|�tj|�\}}tj|�}tj	tj |��tj#�y)N)�
contract_name)rrgr�r'r)r
�ATTACH_SUCCESS_TMPLrS�ATTACH_SUCCESS_NO_CONTRACT_NAMEr�stop�cleanuprr�format_tabularr�handle_unicode_characters�process_events)rCrkr��status_dict�_ret�outputs      r�post_cli_attachr��s���&�=�=�c�B��&�4�4�M��
�
�
��(�(�/�/�m�/�L�	
�	�
�
�8�;�;�<�
�K�K�M�
�N�N�3�����s�+��K��
�
"�
"�;�
/�F�	�J�J�t�-�-�f�5�6�	���r�scope�set_key�	set_valuec���|tjk(r|j}|j}n+|tjk(r|j
}|j}d|vr|}n|}t|��y)zS
    Handles setting part the apt proxies - global and uaclient scoped proxies
    �https)�
http_proxy�https_proxy�proxy_scopeN)r�GLOBAL�global_apt_http_proxy�global_apt_https_proxy�UACLIENT�ua_apt_http_proxy�ua_apt_https_proxyr)rCr�r�r�r�r�s      r�configure_apt_proxyr��sm��
�
�$�$�$��.�.�
��0�0��	�-�(�(�	(��*�*�
��,�,���'�����
���;�E�rc��tjgd��}|j�s�tjjdj
|t|�t��tjj�tjd�tjjd�|j�s��yy)N)�|�/�-�\z
{}{}{}g�������?�)�	itertools�cycle�is_set�sys�stdout�writerS�next�CLEAR_LINE_ANSI_CODE�flush�time�sleep)�stop_spinner�msg�spinners   r�run_spinnerr��s����o�o�3�4�G��!�!�#��
�
������c�4��=�2F�G�	
�	�
�
�����
�
�3���
�
�����
�!�!�#rr�c����fd�}|S)Nc�2���t����fd��}|S)Nc���tjj�s�|fd|i|��Stj�}tj
t|�f��}|j��|fd|i|��}|j�|j�tjjdtz�tjj�|S)NrC)�targetr7�
)
r�r��isatty�	threading�Event�Threadr��start�setrr�r�r�)r7rCr8r��spinner_threadrErFr�s      ��rrGz,with_spinner.<locals>.wrapper.<locals>.new_f�s�����:�:�$�$�&���1�3�1�&�1�1�$�?�?�,�L�&�-�-�"�,��)<��N�
� � �"��t�/��/��/�F��������!��J�J���T�$8�8�9��J�J�����Mrr)rFrGr�s` �rrHzwith_spinner.<locals>.wrapper�s ���	�q��	�
�	�*�rr5)r�rHs` r�with_spinnerr��s����2�Nrc���|dk(r8tjj|ztjjzS|dk(r8tjj|ztjjzS|dk(r8tjj
|ztjjzS|dk(r8tjj|ztjjzS|S)N�low�medium�high�critical)r
�TxtColor�INFOBLUE�ENDC�
WARNINGYELLOW�ORANGE�FAIL)�prioritys r�colorize_priorityr�s����5��� � �)�)�H�4�x�7H�7H�7M�7M�M�M�	�X�	����+�+�h�6��9J�9J�9O�9O�O�	
�
�V�	�� � �'�'�(�2�X�5F�5F�5K�5K�K�K�	�Z�	�� � �%�%��0�8�3D�3D�3I�3I�I�I��rr)r[)4r�rsr�r�r��	functoolsr�typingr�uaclientrrrr	r
rrr
rr�'uaclient.api.u.pro.security.fix._commonr�(uaclient.api.u.pro.status.is_attached.v1r�uaclient.aptrr�uaclient.configr�uaclient.filesr�get_event_loggerr'r��AbstractProgressrr9r2r<rIrOrVrbrlrvr�r�r4r�r�r�r�r5rr�<module>r�s����	�
��������E�A�7�$�(�%��%�%�'�� ��5�s�3�3�5�0	�����
�
� �2��$
�8���d��(�	��������}�	�

��0��h�s�m��:r