o
    ÙKÕiˆ  ã                   @   s&  d dl mZmZmZmZmZmZmZmZ d dl	m
Z
 d dlmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ e ¡ Ze
je
je
 ¡ e
 d¡d	efd
d„ƒƒƒƒZdej de!de!d	efdd„Z"edej#ej$eej%eedej&j'dd�dd�edej(j'dd�dddgdd�gd�gd�Z)dS )é    )Ú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| jdkd�}|dkrt ¡  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
 tjy   Y qw |jdd�\}}|r,| |¡ q|rHt t	j
 t|ƒ¡¡ |D ]}t d |j¡¡ q<tj|d�sPdS |D ]}t|| ||dd� 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"   r   (   sD   
þÿ
€û
r   Údetachz--assume-yes)ÚcommandÚ
store_true)ÚhelpÚactionz--formatÚcli)ÚdefaultÚstorer   )r>   r?   ÚchoicesrA   )Ú	arguments)r>   Údescriptionr?   Úhelp_categoryÚargument_groupsN)*Úuaclientr   r   r   r   r   r   r   r	   Úuaclient.clir
   Úuaclient.cli.commandsr   r   r   Úuaclient.cli.disabler   Úuaclient.cli.parserr   Úuaclient.filesr   r   Úuaclient.timer.update_messagingr   Úget_event_loggerr   Úverify_json_format_argsÚassert_rootÚassert_attachedÚassert_lock_fileÚintr#   ÚUAConfigÚboolr   ÚCLI_ROOT_DETACHÚCLI_DETACH_DESCÚOTHERÚCLI_ASSUME_YESr   ÚCLI_FORMAT_DESCÚdetach_commandr!   r!   r!   r"   Ú<module>   sJ   ( 
3ýûúÿÿ
ú