U
    Jh                     @   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 nL tjk
r } z,ttj t|jd}t||d |W 5 d }~X Y nX tdtj  |jS )	Njson--format)Zparamvaluecfg
)	user_code)Zmagic_token)Zoptionsr   )formatr   ZMagicAttachInvalidParameventinfor   ZCLI_MAGIC_ATTACH_INITr   ZCLI_MAGIC_ATTACH_SIGN_INr   r   tokenr   ZMagicAttachTokenErrorZCLI_MAGIC_ATTACH_FAILEDr	   r
   ZCLI_MAGIC_ATTACH_PROCESSINGZcontract_token)argsr   kwargsZinitiate_respZwait_optionsZ	wait_respeZrevoke_options r&   5/usr/lib/python3/dist-packages/uaclient/cli/attach.py_magic_attach#   s4    

r(   z
pro attachc             
   K   s  | j r| jrt n| j s4| js4t| |d}d }nv| j rR| j }tj| d }nXzt	t
| j}W n6 tk
r } ztj| jj|jdW 5 d }~X Y nX |j }|j}| jo|d k}ztj|||d W n tjk
r   t Y nX d}|d k	r| jrt||\}	}
|	D ]t}t||\}}|s|d}|d k	rt|tr|jd k	rt|jj tj|jj|jj|d n
t| q|
rt|
|d}tj|jtj d tj|j|j!d d}t"#|}|$  t%&| |S d S )	Nr   )Zconfig_nameerror)r"   allow_enabler      )	error_msg
error_codeservice)Z	file_type)r,   r-   )'r"   attach_configr   ZCLIAttachTokenArgXORConfigr(   r   ZsecretsZ
add_secretr   Z	from_dictr   r   ZAttachInvalidConfigFileErrornamemsgZenable_servicesauto_enabler   Zattach_with_tokenZConnectivityErrorZAttachErrorr   Zenable_entitlement_by_name
isinstancer   messager    r!   r)   Zservice_processedr   sysstderrZmsg_coder   ZUAContractClientZupdate_activity_tokenr   Zpost_cli_attach)r#   r   r$   r"   Zenable_services_overrider/   r%   r*   ZretfoundZ	not_foundr0   Zent_retreasonr)   Zcontract_clientr&   r&   r'   action_attachD   sx    
   

r9   ZattachT   r"   ?)helpnargsz--no-auto-enableZstore_falser2   )r<   actiondestz--attach-configr)r<   typer   Zcli)defaultZstorer   )r<   r>   choicesrB   )Z	arguments)r<   Zdescriptionr>   Zpreserve_descriptionZhelp_categoryZhelp_positionZargument_groups)4argparser5   Zuaclientr   r   r   r   r   r   Z+uaclient.api.u.pro.attach.magic.initiate.v1r   Z)uaclient.api.u.pro.attach.magic.revoke.v1r	   r
   Z'uaclient.api.u.pro.attach.magic.wait.v1r   r   Zuaclient.clir   Zuaclient.cli.commandsr   r   r   Zuaclient.cli.parserr   Zuaclient.data_typesr   r   Zuaclient.entitlementsr   r   Z(uaclient.entitlements.entitlement_statusr   Zuaclient.yamlr   Zget_event_loggerr    r(   Zassert_not_attachedZassert_rootZassert_lock_filer9   ZCLI_ROOT_ATTACHZCLI_ATTACH_DESCZ
QUICKSTARTZCLI_ATTACH_TOKENZCLI_ATTACH_NO_AUTO_ENABLEZCLI_ATTACH_ATTACH_CONFIGZFileTypeZCLI_FORMAT_DESCr   Zattach_commandr&   r&   r&   r'   <module>   sl    !D  