o
    ÙKÕi,
  ã                   @   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     