o
    ÙKÕií  ã                   @   s¶   d dl Z d dlmZmZmZ d dlmZmZ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 G d
d„ dejƒZG dd„ deƒZG dd„ deƒZdS )é    N)ÚTupleÚTypeÚUnion)ÚapiÚmessagesÚsystem)ÚAPT_KEYS_DIRÚDEB822_REPO_FILE_CONTENTÚKEYRINGS_DIR)ÚESM_APT_ROOTDIR)Úrepo)ÚUAEntitlement)ÚCanDisableFailure)Úset_filename_extensionc                       sf   e Zd ZejjZdZede	e
e df fdd„ƒZdejdef‡ fdd„Zdd
d„Zddd„Z‡  ZS )ÚESMBaseEntitlementTÚreturn.c                 C   s   ddl m}m} ||fS )Nr   )ÚROSEntitlementÚROSUpdatesEntitlement)Úuaclient.entitlements.rosr   r   )Úselfr   r   © r   ú;/usr/lib/python3/dist-packages/uaclient/entitlements/esm.pyÚdependent_services   s   z%ESMBaseEntitlement.dependent_servicesÚprogressc                    s2   ddl m} tƒ  |¡}|r|| jƒ |  ¡  |S ©Nr   )Úupdate_motd_messages)Úuaclient.timer.update_messagingr   ÚsuperÚ_perform_enableÚcfgÚdisable_local_esm_repo)r   r   r   Úenable_performed©Ú	__class__r   r   r      s   
z"ESMBaseEntitlement._perform_enableNc              
   C   s´   t  ¡ j}| j d¡sJ ‚| jtdƒd … }ttj 	t
| j ¡dƒ}ttj 	t
| j ¡dƒ}tj |¡s:tj |¡r<d S dj|d�}dj||d�}t  |tj||t| jdd	�¡ d S )
Nzesm-ÚsourcesÚlistz$https://esm.ubuntu.com/{name}/ubuntu)Únamez0{series}-{name}-security {series}-{name}-updates)Úseriesr&   Ú )ÚurlÚsuitesÚkeyrings_dirÚkeyring_fileÚdeb_src)r   Úget_release_infor'   r&   Ú
startswithÚlenr   ÚosÚpathÚnormpathr   Ú	repo_fileÚexistsÚformatÚ
write_filer	   r
   Úrepo_key_file)r   r'   Úesm_nameÚsources_repo_filenameÚlist_repo_filenameÚesm_urlr*   r   r   r   Úsetup_local_esm_repo#   sB   
ÿüÿüÿÿûþz'ESMBaseEntitlement.setup_local_esm_repoc                 C   sV   t j tt | j ¡}t |¡ t j t| j ¡}t t	|dƒ¡ t t	|dƒ¡ d S )Nr$   r%   )
r1   r2   r3   r   r   r8   r   Úensure_file_absentr4   r   )r   r,   Úrepo_filenamer   r   r   r    L   s   ÿ
ÿÿÿz)ESMBaseEntitlement.disable_local_esm_repo)r   N)Ú__name__Ú
__module__Ú__qualname__r   ÚurlsÚESM_HOME_PAGEÚhelp_doc_urlÚcheck_updates_pocketÚpropertyr   r   r   r   r   ÚProgressWrapperÚboolr   r=   r    Ú__classcell__r   r   r"   r   r      s    
	)r   c                       óV   e Zd ZdZdZejZejZ	ej
ZdZdejdeeedef f f‡ fdd„Z‡  ZS )	ÚESMAppsEntitlementÚUbuntuESMAppszesm-appszubuntu-pro-esm-apps.gpgr   r   Nc                    óB   ddl m} tƒ  |¡\}}|r|| jƒ t ¡ r|  ¡  ||fS r   )r   r   r   Údisabler   r   Úis_current_series_ltsr=   ©r   r   r   Údisable_performedÚfailr"   r   r   rO   f   ó   
zESMAppsEntitlement.disable)r@   rA   rB   Úoriginr&   r   ÚESM_APPS_TITLEÚtitleÚESM_APPS_DESCRIPTIONÚdescriptionÚESM_APPS_HELP_TEXTÚ	help_textr8   r   rH   r   rI   r   r   rO   rJ   r   r   r"   r   rL   ^   ó    ÿþrL   c                       rK   )	ÚESMInfraEntitlementz	esm-infraÚ	UbuntuESMzubuntu-pro-esm-infra.gpgr   r   Nc                    rN   r   )r   r   r   rO   r   r   Úis_current_series_active_esmr=   rQ   r"   r   r   rO   {   rT   zESMInfraEntitlement.disable)r@   rA   rB   r&   rU   r   ÚESM_INFRA_TITLErW   ÚESM_INFRA_DESCRIPTIONrY   ÚESM_INFRA_HELP_TEXTr[   r8   r   rH   r   rI   r   r   rO   rJ   r   r   r"   r   r]   s   r\   r]   )r1   Útypingr   r   r   Úuaclientr   r   r   Úuaclient.aptr   r	   r
   Úuaclient.defaultsr   Úuaclient.entitlementsr   Úuaclient.entitlements.baser   Ú(uaclient.entitlements.entitlement_statusr   Úuaclient.utilr   ÚRepoEntitlementr   rL   r]   r   r   r   r   Ú<module>   s    Q