o
    ÙKÕië  ã                   @   sh  d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
 d dlmZmZ d dl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mZ d d
lmZmZ d dlm Z  d dl!m"Z" e #¡ Z$dd„ Z%ej&ej'e (d¡dd„ ƒƒƒZ)edej*ej+e)dej,deedej-dd�edej.ddd�edej/e  0d¡d�edej1j2d d!�d"d d#gd d$�gd%�gd&�Z3dS )'é    N)ÚactionsÚcontractÚevent_loggerÚ
exceptionsÚmessagesÚsecret_manager)Ú	_initiate)ÚMagicAttachRevokeOptionsÚ_revoke)ÚMagicAttachWaitOptionsÚ_wait)Úcli_util)ÚProArgumentÚProArgumentGroupÚ
ProCommand)ÚHelpCategory)ÚAttachActionsConfigFileÚIncorrectTypeError)Ú*create_enable_entitlements_not_found_errorÚget_valid_entitlement_names)ÚCanEnableFailure)Ú	safe_loadc             
   K   sÀ   | j dkrtjd| j d�‚t tj¡ t|d�}t dtjj |j	d� ¡ t
|jd�}zt||d�}W n! tjyT } zt tj¡ t|jd�}t||d� |‚d }~ww t dtj ¡ |jS )	NÚjsonú--format)ÚparamÚvalue©ÚcfgÚ
)Ú	user_code)Úmagic_token)Úoptionsr   )Úformatr   ÚMagicAttachInvalidParamÚeventÚinfor   ÚCLI_MAGIC_ATTACH_INITr   ÚCLI_MAGIC_ATTACH_SIGN_INr   r   Útokenr   ÚMagicAttachTokenErrorÚCLI_MAGIC_ATTACH_FAILEDr	   r
   ÚCLI_MAGIC_ATTACH_PROCESSINGÚcontract_token)Úargsr   ÚkwargsÚinitiate_respÚwait_optionsÚ	wait_respÚeÚrevoke_options© r4   ú5/usr/lib/python3/dist-packages/uaclient/cli/attach.pyÚ_magic_attach#   s8   
þ
ÿÿÿÿ€ù	r6   z
pro attachc             
   K   sÂ  | j r
| jr
t ¡ ‚| j s| jst| |d�}d }n6| j r(| j }tj |¡ d }n'z
t 	t
| jƒ¡}W n tyH } z
tj| jj|jd�‚d }~ww |j }|j}| joU|d u }z
tj|||d� W n tjyl   t ¡ ‚w d}|d urÑ| jrÑt||ƒ\}	}
|	D ]5}t ||¡\}}|s¯d}|d ur®t|tƒr®|jd ur®t |jj¡ tj|jj|jj|d� qt |¡ q|
rÑt|
|d�}tj|jtj d� tj|j|j!d� d}t" #|¡}| $¡  t% &|¡ |S )	Nr   )Úconfig_nameÚerror)r(   Úallow_enabler   é   )Ú	error_msgÚ
error_codeÚservice)Ú	file_type)r;   r<   )'r(   Úattach_configr   ÚCLIAttachTokenArgXORConfigr6   r   ÚsecretsÚ
add_secretr   Ú	from_dictr   r   ÚAttachInvalidConfigFileErrorÚnameÚmsgÚenable_servicesÚauto_enabler   Úattach_with_tokenÚConnectivityErrorÚAttachErrorr   Úenable_entitlement_by_nameÚ
isinstancer   Úmessager$   r%   r8   Úservice_processedr   ÚsysÚstderrÚmsg_coder   ÚUAContractClientÚupdate_activity_tokenr   Úpost_cli_attach)r-   r   r.   r(   Úenable_services_overrider?   r2   r9   ÚretÚfoundÚ	not_foundrE   Úent_retÚreasonr8   Úcontract_clientr4   r4   r5   Úaction_attachD   sv   ÿ
ÿ€ÿÿÿÿ
ý€ÿ

r]   ÚattachTé   r(   ú?)ÚhelpÚnargsz--no-auto-enableÚstore_falserH   )ra   ÚactionÚdestz--attach-configÚr)ra   Útyper   Úcli)ÚdefaultÚstorer   )ra   rd   Úchoicesri   )Ú	arguments)ra   Údescriptionrd   Úpreserve_descriptionÚhelp_categoryÚhelp_positionÚargument_groups)4ÚargparserP   Úuaclientr   r   r   r   r   r   Ú+uaclient.api.u.pro.attach.magic.initiate.v1r   Ú)uaclient.api.u.pro.attach.magic.revoke.v1r	   r
   Ú'uaclient.api.u.pro.attach.magic.wait.v1r   r   Úuaclient.clir   Úuaclient.cli.commandsr   r   r   Úuaclient.cli.parserr   Úuaclient.data_typesr   r   Úuaclient.entitlementsr   r   Ú(uaclient.entitlements.entitlement_statusr   Úuaclient.yamlr   Úget_event_loggerr$   r6   Úassert_not_attachedÚassert_rootÚassert_lock_filer]   ÚCLI_ROOT_ATTACHÚCLI_ATTACH_DESCÚ
QUICKSTARTÚCLI_ATTACH_TOKENÚCLI_ATTACH_NO_AUTO_ENABLEÚCLI_ATTACH_ATTACH_CONFIGÚFileTypeÚCLI_FORMAT_DESCr"   Úattach_commandr4   r4   r4   r5   Ú<module>   sj     !Dÿüýûñÿÿ
ø