o
    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                   @   sR   e Zd ZedefddZdefddZdedefddZd	ej	de
fd
dZdS )LXDAutoAttachInstancereturnc                 C      dS )NT selfr   r   5/usr/lib/python3/dist-packages/uaclient/clouds/lxd.py	is_viable   s   zLXDAutoAttachInstance.is_viablec                 C   r   )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_changec                C   sh   |rt  ttdt}|jdkr"tjdt	j
|j|jdd dS |jddd	kr2td
 dS dS )NGET   z4LXD instance API returned error for ubuntu-pro query)codebody)extraFguest_attachoffonzNguest_attach config is not turned on. The machine will not try to auto-attach.T)r   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cfgc                 C   sv   t tdt}|jdkrt |jdkrt |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
        POSTi  i  r   zunix://{}{})r   urlr   guest_token )r   r   r   0LXD_INSTANCE_API_ENDPOINT_UBUNTU_PRO_GUEST_TOKENr   r   LXDAutoAttachNotAvailableLXDAutoAttachNotAllowedExternalAPIErrorformatr   r!   r"   r   secrets
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   UAConfigstrr2   r   r   r   r   r	      s    r	   )logginguaclientr   r   r   r   r   r   uaclient.cloudsr   	getLoggerreplace_top_level_logger_namer3   r   r   r   r+   r	   r   r   r   r   <module>   s     