o
    ÙKÕiæ*  ã                   @   s¦  d dl mZmZmZmZmZmZmZ d dlm	Z	 d dl
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 d d	lmZ d d
lmZmZ d dlmZmZ e  ¡ Z!dd„ Z"dd„ Z#ej$dd„ ƒZ%ej$dd„ ƒZ&edej'ej'e#eedej(dd�gd�gd�Z)edej*ej*e%eedej+j,d -ej.¡d�d�gd�gd�Z/edej0ej0e&eedej1j,d -ej.¡d�dd �gd�gd�Z2ed!ej3ej4e"ej5e)e/e2gd"�Z6d#S )$é    )Úapt_newsÚconfigÚentitlementsÚevent_loggerÚ
exceptionsÚhttpÚmessages)Ú_is_attached)ÚAptProxyScope)Úcli_util)ÚProArgumentÚProArgumentGroupÚ
ProCommand)ÚHelpCategory)ÚApplicationStatus)Ústate_files)ÚLXDGuestAttachEnum)Úconfigure_livepatch_proxyÚunconfigure_livepatch_proxy)Úconfigure_snap_proxyÚunconfigure_snap_proxyc                K   s   ddl m} |ƒ  d¡ dS )Nr   ©Ú
get_parserr   )Úuaclient.clir   Úprint_help_for_command)ÚargsÚcfgÚkwargsr   © r   ú5/usr/lib/python3/dist-packages/uaclient/cli/config.pyÚaction_config   s   r    c                K   sÎ   | j r)| j tjvrtjd | j ¡d tj¡d�‚tdj| j t|| j dƒd�ƒ dS t	t
dd	„ tjD ƒƒd
 ƒ}d| d }tjD ]}t|j|t||dƒd�ƒ q@|jsV|jrc|js\|jrettjƒ dS dS dS )z“Perform the 'config show' action optionally limit output to a single key

    :return: 0 on success
    :raise UbuntuProError: on invalid keys
    z'{}'ú, ©ÚargÚchoicesz{key} {value}N©ÚkeyÚvaluer   c                 S   s   g | ]}t |ƒ‘qS r   )Úlen)Ú.0Úxr   r   r   Ú
<listcomp>6   s    z&action_config_show.<locals>.<listcomp>é   z{key: <z	} {value})r&   r   ÚUA_CONFIGURABLE_KEYSr   ÚInvalidArgChoiceÚformatÚjoinÚprintÚgetattrÚstrÚmaxÚglobal_apt_http_proxyÚglobal_apt_https_proxyÚua_apt_http_proxyÚua_apt_https_proxyr   ÚCLI_CONFIG_GLOBAL_XOR_UA_PROXY)r   r   r   Ú	col_widthÚrow_tmplr&   r   r   r   Úaction_config_show#   s.   

þÿÿ
ÿÿýr<   c                K   sv  ddl m} |ƒ }z
| j d¡\}}W n ty'   | d¡ tjd| jd�‚w |tj	vr=| d¡ tj
dd tj	¡d	�‚| ¡ sL| d¡ tj|d
�‚tt||dƒƒtkri| ¡ dvrctj
ddd	�‚| ¡ dk}|dv r«| d¡d }|dkr|tj}ntj}t |||¡ ||i}td#i |¤Ž tj |¡}	|	 ¡ \}
}|
tjkr©td#i |¤Ž �n||jv rí| d¡d }|dkr¿tj}ntj }t |||¡ t|j!pÏ|j"ƒ}|rÝt#t$j%j&ddd�ƒ t' (|t)j*||¡ d|_!d|_"nÆ||j+|j, v �rQd|v rüdnd}|dk�rtj}ntj }||j+v �r$t#t$j-j&d &|¡d &|¡d�ƒ d| }t |||¡ t|j.�p2|j/ƒ}|�rAt#t$j%j&ddd�ƒ t' (|t)j0||¡ d|_.d|_/nb|dv �r�zt1|ƒ}|dk �rgtd &|¡ƒ‚W nJ t�y€   | d¡ t#dƒ tj2||d�‚w |d k�r•|�r�t3 4|¡ n$t5j6 7¡  n|d!k�r³t8|ƒj9�s¤t :¡ ‚t5j; <t5j=t> ?| ¡ ¡d"�¡ t@|||ƒ dS )$zMPerform the 'config set' action.

    @return: 0 on success, 1 otherwise
    r   r   ú=z
config setz<key>=<value>)ÚexpectedÚactualú<key>r!   r"   )r#   N)ÚtrueÚfalsez<value>ztrue, falserA   ©Ú
http_proxyÚhttps_proxyÚ_r   é   zpro scoped aptz
global apt)Úcurrent_proxyÚprevious_proxyÚhttpsúapt_{}_proxyúglobal_apt_{}_proxy©ÚoldÚnewÚglobal_)Úupdate_messaging_timerÚmetering_timerzInvalid interval for {}Ú r%   r   Úlxd_guest_attach©Úguest_attachr   )Ar   r   Úkey_value_pairÚsplitÚ
ValueErrorr   r   ÚGenericInvalidFormatr   r-   r.   r0   ÚstripÚEmptyConfigValueÚtyper2   ÚboolÚlowerr   ÚPROXY_VALIDATION_SNAP_HTTP_URLÚPROXY_VALIDATION_SNAP_HTTPS_URLÚvalidate_proxyr   r   Ú	livepatchÚLivepatchEntitlementÚapplication_statusr   ÚENABLEDr   Úua_scoped_proxy_optionsÚPROXY_VALIDATION_APT_HTTP_URLÚPROXY_VALIDATION_APT_HTTPS_URLr5   r6   r1   r   ÚWARNING_APT_PROXY_OVERWRITEr/   r   Úconfigure_apt_proxyr
   ÚUACLIENTÚ&deprecated_global_scoped_proxy_optionsÚglobal_scoped_proxy_optionsÚWARNING_CONFIG_FIELD_RENAMEr7   r8   ÚGLOBALÚintÚInvalidPosIntConfigValuer   Úupdate_apt_newsr   Úapt_news_contents_fileÚdeleter	   Úis_attachedÚUnattachedErrorÚlxd_pro_config_fileÚwriteÚLXDProConfigr   Ú
from_valueÚsetattr)r   r   r   r   ÚparserÚset_keyÚ	set_valueÚprotocol_typeÚvalidate_urlÚentitlementÚlivepatch_statusrF   Úunset_currentr   r   r   Úaction_config_setB   sâ   
ÿþ

ÿ
ÿ
€

ÿÿÿ
ÿÿÿ
þÿÿÿ
ÿ

ÿ
ÿü

ÿÿr…   c          	      K   sX  ddl m} | jtjvr|ƒ }| d¡ tjdd tj¡d�‚| jdv rH| j 	d¡d }t
|d	� tj |¡}| ¡ \}}|tjkrGt|d	� n[| j|jv rYt |tj| jd
¡ nJ| j|j|j v r“| j|jv rˆd| jv rodnd}t tjjd |¡d |¡d�¡ d| j | _t |tj| jd
¡ n| jdkr£tj  !tj"t#j$d�¡ t%|| jd
ƒ dS )zOPerform the 'config unset' action.

    @return: 0 on success, 1 otherwise
    r   r   zconfig unsetr@   r!   r"   rC   rF   )r€   NrJ   r   rK   rL   rM   rP   rT   rU   )&r   r   r&   r   r-   r   r   r.   r0   rX   r   r   rc   rd   re   r   rf   r   rg   r   rk   r
   rl   rm   rn   ÚeventÚinfor   ro   r/   rp   r   rx   ry   rz   r   ÚOFFr|   )	r   r   r   r   r}   r€   r‚   rƒ   rF   r   r   r   Úaction_config_unsetÍ   sP   
ÿ



€ÿÿÿþÿ
ÿr‰   Úshowr&   ú?)ÚhelpÚnargs)Ú	arguments)rŒ   ÚdescriptionÚactionÚargument_groupsÚsetrW   r!   )Úoptions)rŒ   Úunset)rŒ   Úmetavarr   )rŒ   r�   r�   Úhelp_categoryÚsubcommandsN)7Úuaclientr   r   r   r   r   r   r   Ú(uaclient.api.u.pro.status.is_attached.v1r	   Úuaclient.aptr
   r   r   Úuaclient.cli.commandsr   r   r   Úuaclient.cli.parserr   Ú(uaclient.entitlements.entitlement_statusr   Úuaclient.filesr   Úuaclient.files.user_config_filer   Úuaclient.livepatchr   r   Úuaclient.snapr   r   Úget_event_loggerr†   r    r<   Úassert_rootr…   r‰   ÚCLI_CONFIG_SHOW_DESCÚCLI_CONFIG_SHOW_KEYÚshow_subcommandÚCLI_CONFIG_SET_DESCÚCLI_CONFIG_SET_KEY_VALUEr/   r0   r-   Úset_subcommandÚCLI_CONFIG_UNSET_DESCÚCLI_CONFIG_UNSET_KEYÚunset_subcommandÚCLI_ROOT_CONFIGÚCLI_CONFIG_DESCÚOTHERÚconfig_commandr   r   r   r   Ú<module>   s’   $ 	
 
0ÿÿÿÿû
ÿýÿÿÿû
ÿùÿÿÿû
ú