U
    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                       sl   e Zd ZejjZdZee	e
e df dddZejed fddZd	dd
dZd	dddZ  ZS )ESMBaseEntitlementT.)returnc                 C   s   ddl m}m} ||fS )Nr   )ROSEntitlementROSUpdatesEntitlement)Zuaclient.entitlements.rosr   r   )selfr   r    r   ;/usr/lib/python3/dist-packages/uaclient/entitlements/esm.pydependent_services   s    z%ESMBaseEntitlement.dependent_servicesprogressr   c                    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   Zenable_performed	__class__r   r   r      s    
z"ESMBaseEntitlement._perform_enableNc              
   C   s   t  j}| jdst| jtdd  }ttj	
t| j d}ttj	
t| j d}tj	|sttj	|rxd 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%    )ZurlsuitesZkeyrings_dirkeyring_fileZdeb_src)r   Zget_release_infor&   r%   
startswithAssertionErrorlenr   ospathnormpathr   	repo_fileexistsformatZ
write_filer	   r
   repo_key_file)r   r&   Zesm_nameZsources_repo_filenameZlist_repo_filenameZesm_urlr(   r   r   r   setup_local_esm_repo#   sD    
 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$   )
r-   r.   r/   r   r   r3   r   Zensure_file_absentr0   r   )r   r)   Zrepo_filenamer   r   r   r    L   s    
z)ESMBaseEntitlement.disable_local_esm_repo)__name__
__module____qualname__r   ZurlsZESM_HOME_PAGEZhelp_doc_urlZcheck_updates_pocketpropertyr   r   r   r   r   ProgressWrapperboolr   r4   r    __classcell__r   r   r!   r   r      s   	)r   c                       sT   e Zd ZdZdZejZejZ	ej
ZdZejeeedef f d fddZ  ZS )ESMAppsEntitlementZUbuntuESMAppszesm-appszubuntu-pro-esm-apps.gpgNr   c                    sB   ddl m} t |\}}|r:|| j t r:|   ||fS r   )r   r   r   disabler   r   Zis_current_series_ltsr4   r   r   r   Zdisable_performedZfailr!   r   r   r=   f   s    
zESMAppsEntitlement.disable)r5   r6   r7   originr%   r   ZESM_APPS_TITLEtitleZESM_APPS_DESCRIPTIONdescriptionZESM_APPS_HELP_TEXT	help_textr3   r   r9   r   r:   r   r   r=   r;   r   r   r!   r   r<   ^   s   r<   c                       sT   e Zd ZdZdZejZejZ	ej
ZdZejeeedef f d fddZ  ZS )ESMInfraEntitlementz	esm-infraZ	UbuntuESMzubuntu-pro-esm-infra.gpgNr   c                    sB   ddl m} t |\}}|r:|| j t r:|   ||fS r   )r   r   r   r=   r   r   Zis_current_series_active_esmr4   r>   r!   r   r   r=   {   s    
zESMInfraEntitlement.disable)r5   r6   r7   r%   r?   r   ZESM_INFRA_TITLEr@   ZESM_INFRA_DESCRIPTIONrA   ZESM_INFRA_HELP_TEXTrB   r3   r   r9   r   r:   r   r   r=   r;   r   r   r!   r   rC   s   s   rC   )r-   typingr   r   r   Zuaclientr   r   r   Zuaclient.aptr   r	   r
   Zuaclient.defaultsr   Zuaclient.entitlementsr   Zuaclient.entitlements.baser   Z(uaclient.entitlements.entitlement_statusr   Zuaclient.utilr   ZRepoEntitlementr   r<   rC   r   r   r   r   <module>   s   Q