
    f*                         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j(                         Z G d de      Zy	)
    )AnyDictOptionalTuple)contractevent_loggermessagessystem)CanEnableFailureCanEnableFailureReason)RepoEntitlement)AnboxCloudDataanbox_cloud_credentials_file)MessagingOperationsDictc                       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d	edef fd
Zd 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   silentc           	      &   t         |   |      }|s|S | j                  j                  di       j                  di       }| j                  j
                  d   }t        j                  | j                        }|j                  |dd      }t        |j                  di       j                  di       j                  dd	      |j                  d
d	      |j                  dd	      |j                  dd	            }t        j                  |       y)Nr&   entitlement
directivesmachineTokenzanbox-imagesF)	save_file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cfgmachine_tokenr   UAContractClientget_resource_machine_accessr   r   write)	r   r&   r#   r*   r:   clientanbox_images_machine_accessanbox_cloud_datar%   s	           r   r6   z AnboxEntitlement._perform_enable6   s   g%V%4J))--mR@DD"

 ..~>**4884&,&H&H>U 'I '
# *8<<]BOSr"S^(C(G(G) !+x <",..2">	
 	%**+;<r   c                 N    t         |   |       t        j                          y)Nr(   T)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   )F)"__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   r6   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 "d t <S>:B3-	r   r   N)typingr   r   r   r   uaclientr   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>rf      sC    - - = = 7 3%%%'N Nr   