
    Uٵg                         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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 )	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    	

 &~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_repoK   s    ww''l*T-?-??
 	!!,/((dnn,
 	!!"=)<	
 	!!"=&9	
r   )r   N)__name__
__module____qualname__r   urlsESM_HOME_PAGEhelp_doc_urlpropertyr   r   r   r   r   ProgressWrapperboolr"   rA   r$   __classcell__r&   s   @r   r   r      s^    ==..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   rT   zESMAppsEntitlement.disablee   sO     	I"''/(";4 *++-))+ $&&r   )rE   rF   rG   originr*   r   ESM_APPS_TITLEtitleESM_APPS_DESCRIPTIONdescriptionESM_APPS_HELP_TEXT	help_textr<   r   rL   r   rM   r   r   rT   rN   rO   s   @r   rQ   rQ   ]   sh    FD##E//K++I-M
'++
'	tU4!2233	4
' 
'r   rQ   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!   rT   r#   r   is_current_series_active_esmrA   rV   s        r   rT   zESMInfraEntitlement.disablez   sO     	I"''/(";4 *224))+ $&&r   )rE   rF   rG   r*   rY   r   ESM_INFRA_TITLEr[   ESM_INFRA_DESCRIPTIONr]   ESM_INFRA_HELP_TEXTr_   r<   r   rL   r   rM   r   r   rT   rN   rO   s   @r   ra   ra   r   sh    DF$$E00K,,I.M
'++
'	tU4!2233	4
' 
'r   ra   )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   rQ   ra    r   r   <module>rr      sX    	 % % * * M M - & 4 F 0M
-- M
`'+ '*', 'r   