File: //lib/python3/dist-packages/uaclient/cli/__pycache__/detach.cpython-310.pyc
o
    ��Jh�
  �                   @   s&  d dl mZmZmZmZmZmZmZmZ d dl	m
Z
 d dlmZm
Z
mZ d dlmZ d dlmZ d dlmZmZ d dlmZ e�� Ze
je
je
�� e
�d�d	efd
d�����Zdej d
e!de!d	efdd�Z"edej#ej$eej%e
edej&j'dd�dd�edej(j'dd�dddgdd�gd�gd�Z)dS )�    )�config�daemon�entitlements�event_logger�
exceptions�messages�timer�util)�cli_util)�ProArgument�ProArgumentGroup�
ProCommand)�perform_disable)�HelpCategory)�
machine_token�state_files)�update_motd_messagesz
pro detach�returnc                K   s:   t || j| jdkd�}|dkrt��  t��  t��  |S )zXPerform the detach action for this machine.
    @return: 0 on success, 1 otherwise
    �json)�
assume_yes�json_outputr   )	�_detachr   �formatr   �startr   �stop�event�process_events)�args�cfg�kwargs�ret� r!   �5/usr/lib/python3/dist-packages/uaclient/cli/detach.py�
action_detach   s   	�r#   r   r   r   c           	   	   C   s�   g }t �| �D ]%}z	t j| |d�}W n
 tjy   Y qw |jdd�\}}|r,|�|� q|rHt�t	j
�t|��� |D ]}t�d�
|j�� q<tj|d�sPdS |D ]}t|| ||dd� qRt�| �}|��  t��  t| � t�t	j� d	S )
aj  Detach the machine from the active Ubuntu Pro subscription,
    :param cfg: a ``config.UAConfig`` instance
    :param assume_yes: Assume a yes answer to any prompts requested.
         In this case, it means automatically disable any service during
         detach.
    :param json_output: output should be json only
    @return: 0 on success, 1 otherwise
    )r   �nameT)�ignore_dependent_servicesz    {})r   �   F)r   r   �
update_statusr   )r   �entitlements_disable_order�entitlement_factoryr   �EntitlementNotFoundError�can_disable�appendr   �infor   �DETACH_WILL_DISABLE�	pluralize�lenr   r$   r	   �prompt_for_confirmationr   r   �get_machine_token_file�deleter   �delete_state_filesr   �DETACH_SUCCESS)	r   r   r   �
to_disable�ent_name�entr    �_�machine_token_filer!   r!   r"