U
    lHJe*                     @   s   d dl mZmZmZmZ d dl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)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deed fddZ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_enableF)silentr   c                    s   t  j|d}|s|S | jdi di }| jjd }t| j}|j|ddd}t	|di di dd	|d
d	|dd	|dd	d}t
| dS )Nr   Zentitlement
directivesZmachineTokenzanbox-imagesF)Z	save_fileZ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cfgmachine_tokenr   ZUAContractClientZ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_enablec                    s   t  j|d t  dS )Nr   T)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)F)F)"__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"   r&   r   strr   r)   __classcell__r   r   r   r   r      s&   

 r   N)typingr   r   r   r   Zuaclientr   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   