U
    Jh,
                     @   sd   d dl Z d dlmZmZmZmZmZmZ d dlm	Z	 e 
eeZdZdZdZG dd de	ZdS )	    N)config
exceptionshttplogsecret_managerutil)AutoAttachInstancez/dev/lxd/sockz/1.0/ubuntu-proz/1.0/ubuntu-pro/tokenc                   @   sN   e Zd ZeedddZedddZeedddZej	e
d	d
dZdS )LXDAutoAttachInstance)returnc                 C   s   dS )NT selfr   r   5/usr/lib/python3/dist-packages/uaclient/clouds/lxd.py	is_viable   s    zLXDAutoAttachInstance.is_viablec                 C   s   dS )zSYes, but only once - is_pro_license_present doesn't
        support wait_for_changeTr   r   r   r   r   should_poll_for_pro_license   s    z1LXDAutoAttachInstance.should_poll_for_pro_license)wait_for_changer
   c                C   sh   |rt  ttdt}|jdkrDtjdt	j
|j|jdd dS |jddd	krdtd
 dS dS )NZGET   z4LXD instance API returned error for ubuntu-pro query)codebody)extraFZguest_attachZoffZonzNguest_attach config is not turned on. The machine will not try to auto-attach.T)r   ZCancelProLicensePollingr   unix_socket_requestLXD_INSTANCE_API_SOCKET_PATH$LXD_INSTANCE_API_ENDPOINT_UBUNTU_PROr   LOGerrorr   r   r   	json_dictgetinfo)r   r   respr   r   r   is_pro_license_present   s&    
z,LXDAutoAttachInstance.is_pro_license_present)cfgr
   c                 C   sz   t tdt}|jdkr"t n:|jdkr6t n&|jdkr\tj|jd	tt|j
d|jdd}tj| |S )	z{
        Cloud-specific implementation of acquiring the pro token using whatever
        method suits the platform
        ZPOSTi  i  r   zunix://{}{})r   Zurlr   guest_token )r   r   r   0LXD_INSTANCE_API_ENDPOINT_UBUNTU_PRO_GUEST_TOKENr   r   ZLXDAutoAttachNotAvailableZLXDAutoAttachNotAllowedZExternalAPIErrorformatr   r   r   r   ZsecretsZ
add_secret)r   r    r   r!   r   r   r   acquire_pro_token1   s*    




z'LXDAutoAttachInstance.acquire_pro_tokenN)__name__
__module____qualname__propertyboolr   r   r   r   ZUAConfigstrr%   r   r   r   r   r	      s
   r	   )ZloggingZuaclientr   r   r   r   r   r   Zuaclient.cloudsr   Z	getLoggerZreplace_top_level_logger_namer&   r   r   r   r#   r	   r   r   r   r   <module>   s    