U
    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edddZedddZejeddd	Zejedd
dZeeeej f dddZeeeej f d f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	landscape)returnc                 C   s   dS N    selfr   r   A/usr/lib/python3/dist-packages/uaclient/entitlements/landscape.pyenable_steps   s    z!LandscapeEntitlement.enable_stepsc                 C   s   dS r   r   r   r   r   r   disable_steps   s    z"LandscapeEntitlement.disable_steps)progressr   c              
   C   s   dg| j  }| s&d|kr&|dg7 }td| |ttjj	d
|d ztj||  d W nh tjk
r } zHt| | s|d|j  tj|j |j dW Y d	S d }~X Y nX d
S )Nlandscape-config--silentzExecuting: %r Zcommand)Zpipe_stdouterrinfo)stdoutstderrFT)Z
extra_argsZis_interactiveLOGdebugr   r   Zredact_sensitive_logsr	   EXECUTING_COMMANDformatjoinr
   subpr   ProcessExecutionErrorZ	exceptionemitr    stripZ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 nB tjk
rr } z"t	
| |dt|  W 5 d }~X Y nX |dtj dS )Nr   z	--disabler   r   r   T)r   r	   r#   r$   r%   r
   r&   r   r'   r!   errorr(   strr)   ZLANDSCAPE_CONFIG_REMAINSr*   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 d S )Nzlandscape-client)Zare_required_packages_installedr
   Zis_systemd_unit_activer   ZENABLEDZDISABLEDr	   ZLANDSCAPE_SERVICE_NOT_ACTIVEr   r   r   r   application_statusB   s    
z'LandscapeEntitlement.application_statusc                    sf   t   }|d tjkrb| jd di }|dd }t j}| j	rb|d k	rb||krbtjt
jfS |S )Nr   ZentitlementZaffordancesseries)superapplicability_statusr   ZINAPPLICABLEZentitlement_cfggetr
   Zget_release_infor2   Zaffordance_check_seriesr	   ZLANDSCAPE_INAPPLICABLE)r   r4   Z
affordanceZaffordance_seriesZcurrent_series	__class__r   r   r4   P   s$    

 
z)LandscapeEntitlement.applicability_statusc                 C   sB   t  r>ztdddg W n  tjk
r<   dtjf Y S X dS )Nr   z--is-registeredr   T)FN)r   Zwe_are_currently_rootr
   r&   r   r'   r	   ZLANDSCAPE_NOT_REGISTEREDr   r   r   r   enabled_warning_statuse   s    
z+LandscapeEntitlement.enabled_warning_statusF)orig_accessdeltasallow_enabler   c                    s   t  j||ddS )NF)r;   )r3   process_contract_deltas)r   r9   r:   r;   r6   r   r   r<   w   s
      z,LandscapeEntitlement.process_contract_deltas)F)#__name__
__module____qualname__namer	   ZLANDSCAPE_TITLEtitleZLANDSCAPE_DESCRIPTIONZdescriptionZurlsZLANDSCAPE_HOME_PAGEZhelp_doc_urlZLANDSCAPE_HELP_TEXTZ	help_textintr   r   r   ZProgressWrapperboolr-   r0   r   r   r   ZNamedMessager1   r   r4   r8   r   r/   r   r<   __classcell__r   r   r6   r   r      s,    

r   )Zloggingtypingr   r   r   r   Zuaclientr   r   r   r	   r
   r   Zuaclient.entitlements.baser   Z(uaclient.entitlements.entitlement_statusr   r   Z	getLoggerZreplace_top_level_logger_namer=   r!   Zget_event_loggerZeventr   r   r   r   r   <module>   s    