
    Uٵg=                         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j*                         Z G d de      Zy	)
    )AnyDictOptionalTuple)apicontractevent_loggermessagessystem)CanEnableFailureCanEnableFailureReason)RepoEntitlement)AnboxCloudDataanbox_cloud_credentials_file)MessagingOperationsDictc                   F    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       Zdeeee   f   f fdZd	ej8                  def fd
Zd	ej8                  f fdZdee e!f   dee    defdZ" xZ#S )AnboxEntitlementzanbox-cloudzubuntu-pro-anbox-cloud.gpgz{}TAnboxreturnc                 D    | j                   sdt        j                  giS i S )Npost_enable)access_onlyr
   ANBOX_RUN_INIT_CMD)selfs    =/usr/lib/python3/dist-packages/uaclient/entitlements/anbox.py	messagingzAnboxEntitlement.messaging   s$    !H$?$?#@AAI    c                     t         |          \  }}|s||fS t        j                         r6| j                  s*dt        t        j                  t        j                        fS y)NF)TN)
super
can_enabler   is_containerr   r   r   ONLY_ACCESS_ONLY_SUPPORTEDr
   !ANBOX_FAIL_TO_ENABLE_ON_CONTAINER)r   retreason	__class__s      r   r    zAnboxEntitlement.can_enable%   sa    g(*V; )9)9 *EE>>  r   progressc           	          t         |   |      }|s|S | j                  j                  di       j                  di       }| j                  j
                  d   }t        j                  | j                        }|j                  |d      }t        |j                  di       j                  di       j                  dd      |j                  dd      |j                  dd      |j                  d	d      
      }t        j                  |       y)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*   r9   clientanbox_images_machine_accessanbox_cloud_datar&   s	           r   r5   z AnboxEntitlement._perform_enable6   s    g%h/J))--mR@DD"

 //==nM**4884&,&H&H>'
# *8<<]BOSr"S^(C(G(G) !+x <",..2">	
 	%**+;<r   c                 L    t         |   |       t        j                          y)NT)r   _perform_disabler   delete)r   r'   r&   s     r   rB   z!AnboxEntitlement._perform_disableT   s     *$++-r   obligationsr.   c                      y)NF )r   rD   r.   s      r   _should_enable_by_defaultz*AnboxEntitlement._should_enable_by_default]   s     r   )$__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   ProgressWrapperr5   rB   r   strr   rG   __classcell__)r&   s   @r   r   r      s    D  E,,K==00L((I0MM"F2  E$1A(B"BC "(;(;  <)<)< S>:B3-	r   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   rF   r   r   <module>rg      sC    - - B B 7 3%%%'N Nr   