
Kej                 @   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 Gd	 d
   d
 e j  Z Gd d   d e  Z Gd d   d e  Z d S)    N)TupleTypeUnion)gpgmessagessystem)APT_KEYS_DIRESM_REPO_FILE_CONTENTKEYRINGS_DIR)ESM_APT_ROOTDIR)repo)UAEntitlement)CanDisableFailurec                   s   e  Z d  Z e j j Z e e e	 e
 d f d d d     Z d e e d   f d d   Z d	 d d
 d    Z d	 d d d    Z   S)ESMBaseEntitlement.)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_servicesF)silentr   c                sF   d d l  m } t   j d |  } | rB | |  j  |  j   | S)Nr   )update_motd_messagesr   )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 } |  j j d  s' t  |  j t d  d   } t j j	 t
 |  j j d |  j   } |  j } t j j |  r d  St  j | t j d | d |   t j j t |  } t j j	 t
 t |  } t j t j j |  d d t j | |  d  S)Nzesm-nameseriesexist_okT)r   Zget_release_infor    r   
startswithAssertionErrorlenospathnormpathr   repo_list_file_tmplformatrepo_key_fileexistsZ
write_filer	   joinr
   r   makedirsdirnamer   Zexport_gpg_key)r   r    Zesm_namerepo_filenamekeyring_fileZsource_keyring_fileZdestination_keyring_filer   r   r   setup_local_esm_repo!   s     			z'ESMBaseEntitlement.setup_local_esm_repoc             C   sc   t  j j t t |  j  } t  j j t |  j j d |  j   } t	 j
 |  t	 j
 |  d  S)Nr   )r%   r&   r'   r   r   r*   r(   r)   r   r   Zensure_file_absent)r   r0   r/   r   r   r   r   <   s    		z)ESMBaseEntitlement.disable_local_esm_repo)__name__
__module____qualname__r   ZurlsZESM_HOME_PAGEZhelp_doc_urlpropertyr   r   r   r   boolr   r1   r   r   r   )r   r   r      s   &!	r   c                   so   e  Z d  Z d Z d Z e j Z e j Z	 e j
 Z d Z d e e e d e f f d   f d d   Z   S)	ESMAppsEntitlementZUbuntuESMAppszesm-appszubuntu-pro-esm-apps.gpgFN)r   c                s^   d d l  m } t   j d |  \ } } | rT | |  j  t j   rT |  j   | | f S)Nr   )r   r   )r   r   r   disabler   r   Zis_current_series_ltsr1   )r   r   r   disable_performedfail)r   r   r   r8   O   s    
zESMAppsEntitlement.disable)r2   r3   r4   originr   r   ZESM_APPS_TITLEtitleZESM_APPS_DESCRIPTIONdescriptionZESM_APPS_HELP_TEXT	help_textr*   r   r6   r   r   r8   r   r   )r   r   r7   G   s   			r7   c                   so   e  Z d  Z d Z d Z e j Z e j Z	 e j
 Z d Z d e e e d e f f d   f d d   Z   S)	ESMInfraEntitlementz	esm-infraZ	UbuntuESMzubuntu-pro-esm-infra.gpgFN)r   c                s^   d d l  m } t   j d |  \ } } | rT | |  j  t j   rT |  j   | | f S)Nr   )r   r   )r   r   r   r8   r   r   Zis_current_series_active_esmr1   )r   r   r   r9   r:   )r   r   r   r8   d   s    
zESMInfraEntitlement.disable)r2   r3   r4   r   r;   r   ZESM_INFRA_TITLEr<   ZESM_INFRA_DESCRIPTIONr=   ZESM_INFRA_HELP_TEXTr>   r*   r   r6   r   r   r8   r   r   )r   r   r?   \   s   			r?   )r%   Z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RepoEntitlementr   r7   r?   r   r   r   r   <module>   s   ;