U
    Jh=                     @   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edddZeeee f d fd	d
Zejed fddZejd fddZee e!f ee  edddZ"  Z#S )AnboxEntitlementzanbox-cloudzubuntu-pro-anbox-cloud.gpgz{}TZAnbox)returnc                 C   s   | j sdtjgiS i S d S )NZpost_enable)access_onlyr	   Z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
   Zis_containerr   r   r   ZONLY_ACCESS_ONLY_SUPPORTEDr	   Z!ANBOX_FAIL_TO_ENABLE_ON_CONTAINER)r   retreason	__class__r   r   r   %   s    zAnboxEntitlement.can_enable)progressr   c                    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 )NZentitlement
directivesZmachineTokenzanbox-imagesZurl resourceTokenZaptURLZaptKey)Zanbox_images_urlZanbox_images_resource_tokenZanbox_cloud_apt_urlZanbox_cloud_apt_tokenT)r   _perform_enableZentitlement_cfggetZmachine_token_filemachine_tokenr   ZUAContractClientZcfgZget_resource_machine_accessr   r   write)r   r   r   r   r$   ZclientZanbox_images_machine_accessZanbox_cloud_datar   r   r   r"   6   s<         


z AnboxEntitlement._perform_enable)r   c                    s   t  | t  dS )NT)r   _perform_disabler   delete)r   r   r   r   r   r&   T   s    z!AnboxEntitlement._perform_disable)obligationsr!   r   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	   ZANBOX_TITLEtitleZANBOX_DESCRIPTIONZdescriptionZurlsZANBOX_HOME_PAGEZhelp_doc_urlZANBOX_HELP_TEXTZ	help_textZrepo_key_fileZrepo_url_tmplZaffordance_check_seriesZsupports_access_onlyoriginpropertyr   r   r   boolr   r   r   r   ZProgressWrapperr"   r&   r   strr   r)   __classcell__r   r   r   r   r      s&   

 r   N)typingr   r   r   r   Zuaclientr   r   r   r	   r
   Z(uaclient.entitlements.entitlement_statusr   r   Zuaclient.entitlements.repor   Zuaclient.files.state_filesr   r   Zuaclient.typesr   Zget_event_loggerZeventr   r   r   r   r   <module>   s   