o
    Jh                     @   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