o
    ÙKÕiœ  ã                   @   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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_statusFTÚorig_accessÚdeltasÚallow_enableÚverbosec                    s   t ƒ j||d|d�S )NF)rW   rX   )rE   Úprocess_contract_deltas)r   rU   rV   rW   rX   rP   r   r   rY   w   s   	ÿz,LandscapeEntitlement.process_contract_deltas)FT)#Ú__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   rY   Ú__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_namerZ   r(   Úget_event_loggerÚeventr   r   r   r   r   Ú<module>   s     