
    f                         d dl Z d dlmZmZmZ d dl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ej,                        Z G d de      Z G d de      Zy)    N)TupleTypeUnion)messagessystem)APT_KEYS_DIRDEB822_REPO_FILE_CONTENTKEYRINGS_DIR)ESM_APT_ROOTDIR)repo)UAEntitlement)CanDisableFailure)set_filename_extensionc                        e Zd Zej                  j
                  Zedee	e
   df   fd       Zddedef fdZd	dZd	dZ xZS )
ESMBaseEntitlementreturn.c                     ddl m}m} ||fS )Nr   )ROSEntitlementROSUpdatesEntitlement)uaclient.entitlements.rosr   r   )selfr   r   s      ;/usr/lib/python3/dist-packages/uaclient/entitlements/esm.pydependent_servicesz%ESMBaseEntitlement.dependent_services   s    	

  566    silentc                 |    ddl m} t        |   |      }|r" || j                         | j                          |S Nr   )update_motd_messages)r   )uaclient.timer.update_messagingr   super_perform_enablecfgdisable_local_esm_repo)r   r   r   enable_performed	__class__s       r   r!   z"ESMBaseEntitlement._perform_enable   s:    H 72&2A *'')r   c           
         t        j                         j                  }| j                  j	                  d      sJ | j                  t        d      d  }t        t        j                  j                  t        | j                  z         d      }t        t        j                  j                  t        | j                  z         d      }t        j                  j                  |      st        j                  j                  |      ry dj                  |      }dj                  ||      }t        j                  |t        j                  ||t         | j"                  d	             y )
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-   s          r   setup_local_esm_repoz'ESMBaseEntitlement.setup_local_esm_repo"   s.   ((*11yy##F+++99S[]+ 6GG$..0 	!
 4GG$..0 	
 77>>/0BGGNN5
 8??X?NCJJ K 

 	!$++)!//		
r   c                 x   t         j                  j                  t        t        z   | j
                  z         }t        j                  |       t         j                  j                  t        | j                  z         }t        j                  t        |d             t        j                  t        |d             y )Nr'   r(   )
r4   r5   r6   r   r   r;   r   ensure_file_absentr7   r   )r   r/   repo_filenames      r   r#   z)ESMBaseEntitlement.disable_local_esm_repoK   s    ww''l*T-?-??
 	!!,/((dnn,
 	!!"=)<	
 	!!"=&9	
r   F)r   N)__name__
__module____qualname__r   urlsESM_HOME_PAGEhelp_doc_urlpropertyr   r   r   r   boolr!   r@   r#   __classcell__r%   s   @r   r   r      sX    ==..L7E$}*=s*B$C 7 7 d  t  '
R
r   r   c                        e Zd ZdZdZej                  Zej                  Z	ej                  ZdZ	 ddeeedef   f   f fdZ xZS )ESMAppsEntitlementUbuntuESMAppszesm-appszubuntu-pro-esm-apps.gpgr   Nc                     ddl m} t        |   |      \  }}|r6 || j                         t        j                         r| j                          ||fS r   )r   r   r    disabler"   r   is_current_series_ltsr@   r   r   r   disable_performedfailr%   s        r   rS   zESMAppsEntitlement.disablee   sQ     	I"''//"@4 *++-))+ $&&r   rD   )rE   rF   rG   originr)   r   ESM_APPS_TITLEtitleESM_APPS_DESCRIPTIONdescriptionESM_APPS_HELP_TEXT	help_textr;   r   rL   r   r   rS   rM   rN   s   @r   rP   rP   ]   s_    FD##E//K++I-M 
'	tU4!2233	4
' 
'r   rP   c                        e Zd ZdZdZej                  Zej                  Z	ej                  ZdZ	 ddeeedef   f   f fdZ xZS )ESMInfraEntitlementz	esm-infra	UbuntuESMzubuntu-pro-esm-infra.gpgr   Nc                     ddl m} t        |   |      \  }}|r6 || j                         t        j                         r| j                          ||fS r   )r   r   r    rS   r"   r   is_current_series_active_esmr@   rU   s        r   rS   zESMInfraEntitlement.disablez   sQ     	I"''//"@4 *224))+ $&&r   rD   )rE   rF   rG   r)   rX   r   ESM_INFRA_TITLErZ   ESM_INFRA_DESCRIPTIONr\   ESM_INFRA_HELP_TEXTr^   r;   r   rL   r   r   rS   rM   rN   s   @r   r`   r`   r   s_    DF$$E00K,,I.M 
'	tU4!2233	4
' 
'r   r`   )r4   typingr   r   r   uaclientr   r   uaclient.aptr   r	   r
   uaclient.defaultsr   uaclient.entitlementsr   uaclient.entitlements.baser   (uaclient.entitlements.entitlement_statusr   uaclient.utilr   RepoEntitlementr   rP   r`    r   r   <module>rq      sU    	 % % % M M - & 4 F 0M
-- M
`'+ '*', 'r   