
    Jh                         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ej.                        Z G d de      Z G d de      Zy)    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                        e Zd Zej                  j
                  ZdZede	e
e   df   fd       Zdej                  def fdZd	dZd	dZ xZS )
ESMBaseEntitlementT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    	

 &~66    progressc                 z    ddl m} t        |   |      }|r" || j                         | j                          |S Nr   )update_motd_messages)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   s7    H 728< *'')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)   )
r5   r6   r7   r   r	   r<   r   ensure_file_absentr8   r   )r   r0   repo_filenames      r   r$   z)ESMBaseEntitlement.disable_local_esm_repoL   s    ww''l*T-?-??
 	!!,/((dnn,
 	!!"=)<	
 	!!"=&9	
r   )r   N)__name__
__module____qualname__r   urlsESM_HOME_PAGEhelp_doc_urlcheck_updates_pocketpropertyr   r   r   r   r   ProgressWrapperboolr"   rA   r$   __classcell__r&   s   @r   r   r      sd    ==..L7E$}*=s*B$C 7 7 (;(;    '
R
r   r   c                        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Z xZS )ESMAppsEntitlementUbuntuESMAppszesm-appszubuntu-pro-esm-apps.gpgr   r   Nc                     ddl m} t        |   |      \  }}|r6 || j                         t        j                         r| j                          ||fS r   )r    r   r!   disabler#   r   is_current_series_ltsrA   r   r   r   disable_performedfailr&   s        r   rU   zESMAppsEntitlement.disablef   sO     	I"''/(";4 *++-))+ $&&r   )rE   rF   rG   originr*   r   ESM_APPS_TITLEtitleESM_APPS_DESCRIPTIONdescriptionESM_APPS_HELP_TEXT	help_textr<   r   rM   r   rN   r   r   rU   rO   rP   s   @r   rR   rR   ^   sh    FD##E//K++I-M
'++
'	tU4!2233	4
' 
'r   rR   c                        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Z xZS )ESMInfraEntitlementz	esm-infra	UbuntuESMzubuntu-pro-esm-infra.gpgr   r   Nc                     ddl m} t        |   |      \  }}|r6 || j                         t        j                         r| j                          ||fS r   )r    r   r!   rU   r#   r   is_current_series_active_esmrA   rW   s        r   rU   zESMInfraEntitlement.disable{   sO     	I"''/(";4 *224))+ $&&r   )rE   rF   rG   r*   rZ   r   ESM_INFRA_TITLEr\   ESM_INFRA_DESCRIPTIONr^   ESM_INFRA_HELP_TEXTr`   r<   r   rM   r   rN   r   r   rU   rO   rP   s   @r   rb   rb   s   sh    DF$$E00K,,I.M
'++
'	tU4!2233	4
' 
'r   rb   )r5   typingr   r   r   uaclientr   r   r   uaclient.aptr	   r
   r   uaclient.defaultsr   uaclient.entitlementsr   uaclient.entitlements.baser   (uaclient.entitlements.entitlement_statusr   uaclient.utilr   RepoEntitlementr   rR   rb    r   r   <module>rs      sX    	 % % * * M M - & 4 F 0N
-- N
b'+ '*', 'r   