o
    (f                     @   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rt||\}	}
|	D ]5}t||\}}|sd}|d urt|tr|jd urt|jj tj|jj|jj|d qt| q|
rt|
|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
