o
    Jhm                     @   s   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mZ e eeZe ZG dd deZdS )    N)AnyDictOptionalTuple)apievent_logger
exceptionsmessagessystemutil)UAEntitlement)ApplicabilityStatusApplicationStatusc                	       s   e Zd ZdZejZejZej	j
ZejZdefddZdefddZdejdefdd	Zdejdefd
dZdeeeej f fddZdeeeej f f fddZdeeeej f fddZ	ddeee f deee f dedef fddZ!  Z"S )LandscapeEntitlement	landscapereturnc                 C      dS N    selfr   r   A/usr/lib/python3/dist-packages/uaclient/entitlements/landscape.pyenable_steps      z!LandscapeEntitlement.enable_stepsc                 C   r   r   r   r   r   r   r   disable_steps   r   z"LandscapeEntitlement.disable_stepsprogressc              
   C   s   dg| j  }| sd|vr|dg7 }td| |ttjj	d
|d ztj||  d W d
S  tjyi } z&t| | s^|d|j  tj|j |j dW Y d }~d	S d }~ww )Nlandscape-config--silentzExecuting: %r command)pipe_stdouterrinfo)stdoutstderrFT)
extra_argsis_interactiveLOGdebugr   r   redact_sensitive_logsr	   EXECUTING_COMMANDformatjoinr
   subpr   ProcessExecutionError	exceptionemitr%   stripLandscapeConfigFailedr$   r   r   cmder   r   r   _perform_enable   s,   
	
z$LandscapeEntitlement._perform_enablec              
   C   s   ddg}| tjjd|d zt| W n" tjy: } zt	
| |dt|  W Y d }~nd }~ww |dtj dS )Nr   z	--disabler   r    r#   T)r   r	   r+   r,   r-   r
   r.   r   r/   r(   errorr1   strr2   LANDSCAPE_CONFIG_REMAINSr4   r   r   r   _perform_disable3   s   
 z%LandscapeEntitlement._perform_disablec                 C   s(   |   rtdrtjd fS tjtjfS )Nzlandscape-client)are_required_packages_installedr
   is_systemd_unit_activer   ENABLEDDISABLEDr	   LANDSCAPE_SERVICE_NOT_ACTIVEr   r   r   r   application_statusB   s   
z'LandscapeEntitlement.application_statusc                    sf   t   }|d tjkr1| jd di }|dd }t j}| j	r1|d ur1||vr1tjt
jfS |S )Nr   entitlementaffordancesseries)superapplicability_statusr   INAPPLICABLEentitlement_cfggetr
   get_release_inforD   affordance_check_seriesr	   LANDSCAPE_INAPPLICABLE)r   rF   
affordanceaffordance_seriescurrent_series	__class__r   r   rF   P   s   


z)LandscapeEntitlement.applicability_statusc                 C   s@   t  rz
tg d W dS  tjy   dtjf Y S w dS )N)r   z--is-registeredr   T)FN)r   we_are_currently_rootr
   r.   r   r/   r	   LANDSCAPE_NOT_REGISTEREDr   r   r   r   enabled_warning_statuse   s   	z+LandscapeEntitlement.enabled_warning_statusForig_accessdeltasallow_enablec                    s   t  j||ddS )NF)rW   )rE   process_contract_deltas)r   rU   rV   rW   rP   r   r   rX   w   s   z,LandscapeEntitlement.process_contract_deltas)F)#__name__
__module____qualname__namer	   LANDSCAPE_TITLEtitleLANDSCAPE_DESCRIPTIONdescriptionurlsLANDSCAPE_HOME_PAGEhelp_doc_urlLANDSCAPE_HELP_TEXT	help_textintr   r   r   ProgressWrapperboolr7   r;   r   r   r   NamedMessagerA   r   rF   rT   r   r9   r   rX   __classcell__r   r   rP   r   r      s:    



r   )loggingtypingr   r   r   r   uaclientr   r   r   r	   r
   r   uaclient.entitlements.baser   (uaclient.entitlements.entitlement_statusr   r   	getLoggerreplace_top_level_logger_namerY   r(   get_event_loggereventr   r   r   r   r   <module>   s     