U
    lHJe]                     @   s   d dl Z d dlZd dlmZmZmZm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 e eeZe	 ZdZdZdZG d	d
 d
eZdS )    N)AnyDictOptionalTuple)aptevent_logger
exceptionsmessagessystemutil)UAEntitlement)ApplicationStatuslandscape-clientz/etc/landscape/client.confz-/etc/landscape/client.conf.pro-disable-backupc                       s   e Zd ZdZejZejZej	j
ZejZdeedddZdeedddZeeeej f dd	d
Zeeeej f dddZdeeef eeef eed fddZ  ZS )LandscapeEntitlementZ	landscapeF)silentreturnc              
   C   s  dg| j  }| jr$d|kr$|dg7 }td| tttj	j
d|d ztj|| jd W n tjk
r } zf| jrtj}tj|j|j| j|j |j dd t|j  ttjj
| jd	 W Y d
S d }~X Y nX | jr
ttjj
| jd	 dS )Nlandscape-config--silentzExecuting: %r Zcommand)Zpipe_stdouterr)stdoutstderr)serviceZadditional_info)titleFT)Z
extra_argsZ
assume_yesLOGdebugeventinfor   Zredact_sensitive_logsr	   EXECUTING_COMMANDformatjoinr
   subpr   ProcessExecutionErrorZLANDSCAPE_CONFIG_FAILEDerrormsgnamer   stripr   ZENABLE_FAILEDr   ZENABLED_TMPL)selfr   cmdeerr_msg r+   A/usr/lib/python3/dist-packages/uaclient/entitlements/landscape.py_perform_enable   s8    
	z$LandscapeEntitlement._perform_enablec              
   C   s  ddg}t tjjd|d zt| W nR tj	k
r } z2t
| t t|  t t|| j W 5 d }~X Y nX t
dtt t tjjttd zttt W nN tk
r } z.t
| t t| t t|| j W 5 d }~X Y nX dS )Nr   z	--disabler   r   zBacking up %s as %s)ZoriginalZbackupT)r   r   r	   r   r   r    r
   r!   r   r"   r   r#   strr&   Zwarningr%   r   LANDSCAPE_CLIENT_CONFIG_PATH+LANDSCAPE_CLIENT_CONFIG_PATH_DISABLE_BACKUPZBACKING_UP_FILEosrenameFileNotFoundError)r'   r   r(   r)   r+   r+   r,   _perform_disable=   s:    
$
$z%LandscapeEntitlement._perform_disable)r   c                 C   s$   t trtjd fS tjtjfS d S )N)r   Zis_installedLANDSCAPE_CLIENT_PACKAGE_NAMEr   ZENABLEDZDISABLEDr	   ZLANDSCAPE_CLIENT_NOT_INSTALLEDr'   r+   r+   r,   application_status^   s
    

z'LandscapeEntitlement.application_statusc                 C   sl   t jtsdtjfS t rTzt	dddg W n  t
jk
rR   dtjf Y S X tdshdtjfS dS )NTr   z--is-registeredr   r   )FN)r1   pathexistsr/   r	   ZLANDSCAPE_NOT_CONFIGUREDr   Zwe_are_currently_rootr
   r!   r   r"   ZLANDSCAPE_NOT_REGISTEREDZis_systemd_unit_activeZLANDSCAPE_SERVICE_NOT_ACTIVEr6   r+   r+   r,   enabled_warning_statusi   s$    

z+LandscapeEntitlement.enabled_warning_status)orig_accessdeltasallow_enabler   c                    s   t  j||ddS )NF)r=   )superprocess_contract_deltas)r'   r;   r<   r=   	__class__r+   r,   r?      s
      z,LandscapeEntitlement.process_contract_deltas)F)F)F)__name__
__module____qualname__r%   r	   ZLANDSCAPE_TITLEr   ZLANDSCAPE_DESCRIPTIONZdescriptionZurlsZLANDSCAPE_HOME_PAGEZhelp_doc_urlZLANDSCAPE_HELP_TEXTZ	help_textboolr-   r4   r   r   r   ZNamedMessager7   r:   r   r.   r   r?   __classcell__r+   r+   r@   r,   r      s$   ##! 

r   )Zloggingr1   typingr   r   r   r   Zuaclientr   r   r   r	   r
   r   Zuaclient.entitlements.baser   Z(uaclient.entitlements.entitlement_statusr   Z	getLoggerZreplace_top_level_logger_namerB   r   Zget_event_loggerr   r5   r/   r0   r   r+   r+   r+   r,   <module>   s    