
    g*                        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j@                         Z!d Z"d Z#ejH                  d        Z%ejH                  d        Z& edejN                  ejN                  e# e edejP                  d      g      g      Z) edejT                  ejT                  e% e edejV                  jY                  dj[                  ej\                                    g      g      Z/ edej`                  ej`                  e& e edejb                  jY                  dj[                  ej\                              d      g      g      Z2 edejf                  ejh                  e"ejj                  e)e/e2g      Z6y)     )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                <    ddl m}  |       j                  d       y)Nr   
get_parserr   )uaclient.clir   print_help_for_command)argscfgkwargsr   s       5/usr/lib/python3/dist-packages/uaclient/cli/config.pyaction_configr!      s    'L''1    c                   | j                   r| j                   t        j                  vrMt        j                  dj                  | j                         dj                  t        j                              t        dj                  | j                   t        || j                   d                   yt        t        t        j                  D cg c]  }t        |       c}      dz         }d	|z   d
z   }t        j                  D ])  }t        |j                  |t        ||d                   + |j                  s|j                  r3|j                  s|j                  rt        t         j"                         yyyc c}w )zPerform 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      z{key: <z	} {value})r)   r   UA_CONFIGURABLE_KEYSr   InvalidArgChoiceformatjoinprintgetattrstrmaxlen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   x	col_widthrow_tmplr)   s          r    action_config_showr=   #   s:    xx886666--MM$((+		&"="=>  	""HHGC4$@ # 	

 C)D)DEAQEFJKI9${2H** Ghoo#WS#t-DoEFG 	!!S%?%?!7!7h556 "8 &@ Fs   E>c                
   ddl m}  |       }	 | j                  j                  d      \  }}|t        j                  vrE|j                  d       t        j                  ddj                  t        j                        	      |j                         s'|j                  d       t        j                  |
      t        t        ||d            t         k(  r<|j#                         dvrt        j                  dd	      |j#                         dk(  }|dv r|j                  d      d   }|dk(  rt$        j&                  }nt$        j(                  }t%        j*                  |||       ||i}t-        d#i | t.        j0                  j3                  |      }	|	j5                         \  }
}|
t6        j8                  k(  rt;        d#i | n||j<                  v r|j                  d      d   }|dk(  rt$        j>                  }nt$        j@                  }t%        j*                  |||       t!        |jB                  xs |jD                        }|r*tG        tH        jJ                  jM                  dd             tO        jP                  |tR        jT                  ||       d|_!        d|_"        n.||jV                  |jX                  z   v r$d|v rdnd}|dk(  rt$        j>                  }nt$        j@                  }||jV                  v rMtG        tH        jZ                  jM                  djM                  |      djM                  |                   d|z   }t%        j*                  |||       t!        |j\                  xs |j^                        }|r*tG        tH        jJ                  jM                  dd             tO        jP                  |tR        j`                  ||       d|_.        d|_/        n|dv r,	 tc        |      }|dk  rt	        djM                  |            n|d k(  r7|rtg        jh                  |       ntj        jl                  jo                          n|d!k(  r}tq        |      jr                  st        jt                         tj        jv                  jy                  tk        jz                  t}        j~                  |j#                               "             t        |||       y# t        $ r3 |j                  d       t        j                  d| j                        w xY w# t        $ r4 |j                  d       tG        d       t        jd                  ||      w xY w)$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, falserC   
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_attach )Ar   r   key_value_pairsplit
ValueErrorr   r   GenericInvalidFormatr   r,   r-   r/   stripEmptyConfigValuetyper1   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   r0   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_statusrH   unset_currents                r    action_config_setr   B   s    (\F
!0066s; f111%%l3))6+F+F!G
 	
 ??%%l3))g66GC$'(D0??$55--}  OO%/	//c*1-F">>L??LM9lC9%&v&",,AA#F)<<>!0888%//	C//	/c*1-F"==L>>LM9lC%%C)C)C
 44;;"2< < 
 	$$'')	
 %)!%)"	22

)
)	*
 $+g#56F"==L>>Lc@@@44;;&--m<-44]C <   ')GM9lCS22Lc6L6LM44;;".?O < 
 	$$%%w		
 !%!%	  

	II1} !:!A!A'!JKK  
J	$$S)..557	&	&C ,,,,..''--$$/::9??;LM	
 C)${  
%%l3--$T-@-@
 	

P  	)),7"I559 		s   S+ 4*T* +<T'*=U'c                &   ddl m} | j                  t        j                  vrL |       }|j                  d       t        j                  ddj                  t        j                              | j                  dv r~| j                  j                  d      d   }t        |	       t        j                  j                  |      }|j                         \  }}|t        j                   k(  rt#        |	       n| j                  |j$                  v r2t'        j(                  |t*        j,                  | j                  d
       n6| j                  |j.                  |j0                  z   v r| j                  |j.                  v rxd| j                  v rdnd}t2        j5                  t6        j8                  j;                  dj;                  |      dj;                  |                   d| j                  z   | _        t'        j(                  |t*        j<                  | j                  d
       nP| j                  dk(  rAt>        j@                  jC                  t?        jD                  tF        jH                               tK        || j                  d
       y)zOPerform the 'config unset' action.

    @return: 0 on success, 1 otherwise
    r   r   zconfig unsetrB   r$   r%   rE   rH   )r   NrL   r   rM   rN   rO   rR   rV   rW   )&r   r   r)   r   r,   r   r   r-   r/   r[   r   r   rf   rg   rh   r   ri   r   rj   r   rn   r   ro   rp   rq   eventinfor	   rr   r.   rs   r   r{   r|   r}   r   OFFr   )	r   r   r   r   r   r   r   r   rH   s	            r    action_config_unsetr      s    (xxv222%%n5))6+F+F!G
 	
 xx00s+A.];",,AA#F)<<>!0888'mD	S00	0$$''4	
 
22

)
)	*
 88sAAA'.$((':GMJJ44;;&--m<-44]C <  !488+DH$$S-*>*>$O	'	'''--$$2D2H2HI	
 C4 r"   showr)   ?)helpnargs)	arguments)r   descriptionactionargument_groupssetrZ   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.   r/   r,   set_subcommandCLI_CONFIG_UNSET_DESCCLI_CONFIG_UNSET_KEYunset_subcommandCLI_ROOT_CONFIGCLI_CONFIG_DESCOTHERconfig_commandrY   r"   r    <module>r      s     B & ! K K , F & > G%%%'7> 
G% G%T 
- -` 
		&	&-- < <C	
  			%	%,,$ 99@@$(IIf.I.I$J A 		
* 		'	'.. 55<<$(IIf.I.I$J =  "
	
 , 		!	!(($$ .2BCr"   