o
    ϴf                     @   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                       sb   e Zd Zejj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 )ESMBaseEntitlement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    K   s   
z)ESMBaseEntitlement.disable_local_esm_repo)r   N)__name__
__module____qualname__r   urlsESM_HOME_PAGEhelp_doc_url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   rN   e      
zESMAppsEntitlement.disable)r@   rA   rB   originr&   r   ESM_APPS_TITLEtitleESM_APPS_DESCRIPTIONdescriptionESM_APPS_HELP_TEXT	help_textr8   r   rG   r   rH   r   r   rN   rI   r   r   r"   r   rK   ]       rK   c                       rJ   )	ESMInfraEntitlementz	esm-infra	UbuntuESMzubuntu-pro-esm-infra.gpgr   r   Nc                    rM   r   )r   r   r   rN   r   r   is_current_series_active_esmr=   rP   r"   r   r   rN   z   rS   zESMInfraEntitlement.disable)r@   rA   rB   r&   rT   r   ESM_INFRA_TITLErV   ESM_INFRA_DESCRIPTIONrX   ESM_INFRA_HELP_TEXTrZ   r8   r   rG   r   rH   r   r   rN   rI   r   r   r"   r   r\   r   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   rK   r\   r   r   r   r   <module>   s    P