o
    ÙKÕi=  ã                   @   sˆ   d dl mZmZmZmZ d dlmZmZmZm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZmZ d dlmZ e ¡ ZG dd„ deƒZd	S )
é    )ÚAnyÚDictÚOptionalÚTuple)ÚapiÚcontractÚevent_loggerÚmessagesÚsystem)ÚCanEnableFailureÚCanEnableFailureReason)ÚRepoEntitlement)ÚAnboxCloudDataÚanbox_cloud_credentials_file)ÚMessagingOperationsDictc                       sÀ   e Zd ZdZejZejZej	j
ZejZdZdZdZdZdZedefdd„ƒZdeeee f f‡ fd	d
„Zdejdef‡ fdd„Zdejf‡ fdd„Zdee e!f dee  defdd„Z"‡  Z#S )ÚAnboxEntitlementzanbox-cloudzubuntu-pro-anbox-cloud.gpgz{}TÚAnboxÚreturnc                 C   s   | j s	dtjgiS i S )NÚpost_enable)Úaccess_onlyr	   ÚANBOX_RUN_INIT_CMD)Úself© r   ú=/usr/lib/python3/dist-packages/uaclient/entitlements/anbox.pyÚ	messaging   s   zAnboxEntitlement.messagingc                    s>   t ƒ  ¡ \}}|s||fS t ¡ r| jsdttjtj	ƒfS dS )NF)TN)
ÚsuperÚ
can_enabler
   Úis_containerr   r   r   ÚONLY_ACCESS_ONLY_SUPPORTEDr	   Ú!ANBOX_FAIL_TO_ENABLE_ON_CONTAINER)r   ÚretÚreason©Ú	__class__r   r   r   %   s   þþzAnboxEntitlement.can_enableÚprogressc                    sœ   t ƒ  |¡}|s
|S | j di ¡ di ¡}| jjd }t | j¡}| 	|d¡}t
| di ¡ di ¡ dd¡| dd¡| dd¡| d	d¡d
�}t |¡ dS )NÚentitlementÚ
directivesÚmachineTokenzanbox-imagesÚurlÚ ÚresourceTokenÚaptURLÚaptKey)Úanbox_images_urlÚanbox_images_resource_tokenÚanbox_cloud_apt_urlÚanbox_cloud_apt_tokenT)r   Ú_perform_enableÚentitlement_cfgÚgetÚmachine_token_fileÚmachine_tokenr   ÚUAContractClientÚcfgÚget_resource_machine_accessr   r   Úwrite)r   r$   r    r&   r5   ÚclientÚanbox_images_machine_accessÚanbox_cloud_datar"   r   r   r1   6   s.   ÿÿ
ÿ

ø
z AnboxEntitlement._perform_enablec                    s   t ƒ  |¡ t ¡  dS )NT)r   Ú_perform_disabler   Údelete)r   r$   r"   r   r   r=   T   s   z!AnboxEntitlement._perform_disableÚobligationsr*   c                 C   s   dS )NFr   )r   r?   r*   r   r   r   Ú_should_enable_by_default]   s   z*AnboxEntitlement._should_enable_by_default)$Ú__name__Ú
__module__Ú__qualname__Únamer	   ÚANBOX_TITLEÚtitleÚANBOX_DESCRIPTIONÚdescriptionÚurlsÚANBOX_HOME_PAGEÚhelp_doc_urlÚANBOX_HELP_TEXTÚ	help_textÚrepo_key_fileÚrepo_url_tmplÚaffordance_check_seriesÚsupports_access_onlyÚoriginÚpropertyr   r   r   Úboolr   r   r   r   ÚProgressWrapperr1   r=   r   Ústrr   r@   Ú__classcell__r   r   r"   r   r      s.    	
ÿÿþr   N)Útypingr   r   r   r   Úuaclientr   r   r   r	   r
   Ú(uaclient.entitlements.entitlement_statusr   r   Úuaclient.entitlements.repor   Úuaclient.files.state_filesr   r   Úuaclient.typesr   Úget_event_loggerÚeventr   r   r   r   r   Ú<module>   s    