HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/uaclient/daemon/__pycache__/retry_auto_attach.cpython-310.pyc
o

nHJe��@s�ddlZddlZddlZddlmZmZmZmZmZddl	mZ
ddlmZm
Z
ddlmZddlmZddlmZddlmZmZe�e�e��Zgd	�Zd
Zdedefd
d�Zdefdd�Z deddfdd�Z!dS)�N)�
exceptions�lock�messages�system�util)r)�FullAutoAttachOptions�full_auto_attach)�_is_attached)�UAConfig)�AUTO_ATTACH_STATUS_MOTD_FILE)�notices�state_files)�riii i@8�pr�Qr��r��r�Fr逗rz./run/ubuntu-advantage/flags/auto-attach-failed�e�returncCs�t|tj�rtjj|jd�St|tj�rtjSt|tj	�r%tj
j|jd�St|tj�r3tj
j|jd�St|tj�r<tjSt|tj�rQtjj|jd�d�t|��St|tj�r]d�|j�Stjd|d�t|�pjtjS)	N)�detail)�pid)�	error_msg)�urlz: "{}"z"{}"zUnexpected exception)�exc_info)�
isinstance�api_exceptions�InvalidProImager�$RETRY_ERROR_DETAIL_INVALID_PRO_IMAGE�formatr�NonAutoAttachImageError�(RETRY_ERROR_DETAIL_NON_AUTO_ATTACH_IMAGE�
LockHeldError�RETRY_ERROR_DETAIL_LOCK_HELDr�ContractAPIError�%RETRY_ERROR_DETAIL_CONTRACT_API_ERROR�body�ConnectivityError�%RETRY_ERROR_DETAIL_CONNECTIVITY_ERROR�UrlError� RETRY_ERROR_DETAIL_URL_ERROR_URLr�str�UbuntuProError�msg�LOG�error�RETRY_ERROR_DETAIL_UNKNOWN)r�r2�C/usr/lib/python3/dist-packages/uaclient/daemon/retry_auto_attach.py�,full_auto_attach_exception_to_failure_reason)s0����r4�cfgcCs>tj��tj��t�t�t�tj	j
�t�tj	j�dS)N)r
�retry_auto_attach_state_file�delete�retry_auto_attach_options_filer�ensure_file_absentrr�remove�Notice�AUTO_ATTACH_RETRY_FULL_NOTICE�AUTO_ATTACH_RETRY_TOTAL_FAILURE)r5r2r2r3�cleanupCs


��r>cCs�t|�jrdStj��}|dur|j}t|d�}|j}nd}t}d}t|�D]�\}}t	j	�
t	jj�}|t	j
|d�}|jddd�}tj�tj|||d��|}	|	durXtj}	z|��}Wn	tygYnwtjj||d|	|��d�}
t�td|
d�z*tj|d	d
��tjtjj ||d|	|��d�Wd�n1s�wYWn
t!j"y�Ynwt#�$|�t|�jr�naztj%��}t&�}|dur�|j'|_'|j(|_(t)|�WnEt*j+y�t,�-d�Yn6t*j.�y}
z
t,�/|
j0�WYd}
~
n d}
~
wt�y"}
zt1|
�}t,�2|
�WYd}
~
q'd}
~
wwt3|�t|�j�sjtj�tjt4t�|d��|}	|	du�rDtj}	tj5jt4t�d|	d�}
t�td|
d�tjtjj6t4t�d|	d�dSdS)
Nr)�seconds)�second�microsecond)�interval_index�failure_reason�)�num_attempts�reason�next_run_datestring�
z

z+pro.daemon.retry_auto_attach.notice_updates)r5�lock_holderz&already attached, ending retry service)rErF)7r	�is_attachedr
r6�readrB�RETRY_INTERVALSrC�	enumerate�datetime�now�timezone�utc�	timedelta�replace�write�RetryAutoAttachStaterr1�
astimezone�	Exception�AUTO_ATTACH_RETRY_NOTICEr �	isoformatr�
write_filerr�SpinLockr�addr;r<rr#�time�sleepr8r�enable�enable_betarr�AlreadyAttachedErrorr/�info�EntitlementsNotEnabledError�warningr.r4r0r>�len�&AUTO_ATTACH_RETRY_TOTAL_FAILURE_NOTICEr=)r5�persisted_state�offset�	intervalsrC�index�interval�last_attempt�next_attempt�
msg_reason�auto_attach_status_msg�persisted_options�optionsrr2r2r3�retry_auto_attachOs�

���
�
��
���
�

�
�����
��
�

��rr)"rN�loggingr]�uaclientrrrrr�uaclient.apir�2uaclient.api.u.pro.attach.auto.full_auto_attach.v1rr�(uaclient.api.u.pro.status.is_attached.v1r	�uaclient.configr
�uaclient.daemonr�uaclient.filesrr
�	getLogger�replace_top_level_logger_name�__name__r/rL�FLAG_FILE_PATHrWr,r4r>rrr2r2r2r3�<module>s