+
     gU                         ^ RI t ^ RIt^ RIt^ RIHtHtHtHtHt ^ RI	Ht
 ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ]P.                  ! ]P0                  ! ]4      4      t. ROtR	tR
 R ltR R ltR R ltR# )    N)
exceptionslockmessagessystemutil)r   )FullAutoAttachOptionsfull_auto_attach)_is_attachedUAConfig)AUTO_ATTACH_STATUS_MOTD_FILE)noticesstate_filesz./run/ubuntu-advantage/flags/auto-attach-failedc                0    V ^8  d   QhR\         R\        /# )   ereturn)	Exceptionstr)formats   "C/usr/lib/python3/dist-packages/uaclient/daemon/retry_auto_attach.py__annotate__r   )   s     0 0I 0# 0    c                    \        V \        P                  4      '       d+   \        P                  P                  V P                  R 7      # \        V \        P                  4      '       d   \        P                  # \        V \        P                  4      '       d+   \        P                  P                  V P                  R7      # \        V \        P                  4      '       d+   \        P                  P                  V P                  R7      # \        V \        P                  4      '       dT   \        P                   P                  V P"                  R7      RP                  \%        V P&                  4      4      ,           # \        V \        P(                  4      '       d   RP                  V P*                  4      # \,        P/                  RV R7       \%        V 4      ;'       g    \        P0                  # ))detail)pid)	error_msg)urlz: "{}"z"{}"zUnexpected exception)exc_info)
isinstanceapi_exceptionsInvalidProImager   $RETRY_ERROR_DETAIL_INVALID_PRO_IMAGEr   r   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_URL_ERROR_URLr   r   cause_errorUbuntuProErrormsgLOGerrorUNKNOWN_ERROR)r   s   &r   ,full_auto_attach_exception_to_failure_reasonr3   )   sl   !^3344<<CC;; D 
 	
 
A~==	>	>@@@	A~33	4	444;;;FF	A~66	7	7==DDff E 
 	
 
A~77	8	888?? @ 
OOC./0 	0 
A~44	5	5}}QUU##		(1	51v/////r   c                $    V ^8  d   QhR\         /# )r   cfgr   )r   s   "r   r   r   A   s     	 	 	r   c                 j   \         P                  P                  4        \         P                  P                  4        \        P
                  ! \        4       \        P                  ! \        P                  P                  4       \        P                  ! \        P                  P                  4       R # )N)r   retry_auto_attach_state_filedeleteretry_auto_attach_options_filer   ensure_file_absentr   r   removeNoticeAUTO_ATTACH_RETRY_FULL_NOTICEAUTO_ATTACH_RETRY_TOTAL_FAILURE)r5   s   &r   cleanupr?   A   si    ,,335..557
:;NN44 NN66r   c                (    V ^8  d   QhR\         RR/# )r   r5   r   Nr   )r   s   "r   r   r   M   s     l
 l
8 l
 l
r   c           
      	   \        V 4      P                  '       d   R # \        P                  P	                  4       pVe#   VP
                  p\        VR  pVP                  pM
^ p\        pR p\        V4       EF8  w  rV\        P                  P                  \        P                  P                  4      pV\        P                  ! VR7      ,           pVP                  ^ ^ R7      p\        P                  P                  \        P                   ! W%,           VR7      4       Tp	V	f   \"        P$                  p	 VP'                  4       p\"        P*                  P-                  W%,           ^,           V	VP/                  4       R7      p
\0        P2                  ! \4        RV
,           R,           4        \6        P8                  ! RR7      ;_uu_ 4        \:        P<                  ! \:        P>                  P@                  W%,           ^,           V	VP/                  4       R7       R R R 4       \F        PH                  ! T4       \        T 4      P                  '       d    M^ \        PJ                  P	                  4       p\M        4       pTe#   TPN                  Tn'        TPP                  Tn(        \S        T4        M	  \g        V 4       \        V 4      P                  '       g   \        P                  P                  \        P                   ! \i        \        4      VR7      4       Tp	V	f   \"        P$                  p	\"        Pj                  P-                  \i        \        4      ^,           V	R
7      p
\0        P2                  ! \4        RV
,           R,           4       \:        P<                  ! \:        P>                  Pl                  \i        \        4      ^,           V	R
7       R # R #   \(         d     ELi ; i  + '       g   i     EL; i  \B        PD                   d     ELi ; i  \T        PV                   d    \X        P[                  R	4         EK  \T        P\                   d-   p\X        P_                  TP`                  4        R p? EK  R p?i\(         d-   p\c        T4      p\X        Pe                  T4        R p?EKC  R p?ii ; i)N)seconds)secondmicrosecond)interval_indexfailure_reason)num_attemptsreasonnext_run_datestring
z

z+pro.daemon.retry_auto_attach.notice_updates)lock_holderz&already attached, ending retry service)rG   rH   )7r
   is_attachedr   r7   readrE   RETRY_INTERVALSrF   	enumeratedatetimenowtimezoneutc	timedeltareplacewriteRetryAutoAttachStater   r2   
astimezoner   AUTO_ATTACH_RETRY_NOTICEr   	isoformatr   
write_filer   r   	RetryLockr   addr<   r=   r   r&   timesleepr9   r   enableenable_betar	   r!   AlreadyAttachedErrorr0   infoEntitlementsNotEnabledErrorwarningr/   r3   r1   r?   len&AUTO_ATTACH_RETRY_TOTAL_FAILURE_NOTICEr>   )r5   persisted_stateoffset	intervalsrF   indexintervallast_attemptnext_attempt
msg_reasonauto_attach_status_msgpersisted_optionsoptionsr   s   &             r   retry_auto_attachrs   M   s   C$$$ ">>CCEO" //#FG,	(77#	$Y/((,,X->->-B-BC#h&8&8&JJ#++1!+D0066,,%~-	
 $
!//J	'224L "*!B!B!I!I!+ , 6 6 8 "J "

 	())F2	
	I  NN@@!'!!3%(4(>(>(@	 	

8(((	::??A  ,-G ,!2!9!9&7&C&C#W%m 0B CL(((0066,,"?3-	
 $
!//J;;BB 1A5j C  	
 	())F2	
 	NN::_-1	
) )i  		   '' 		& 22 	HH=>99 	KK 	I!LNIIaLL	sz   7O.O?AO+O?APO('O(+O<6O?<O??PP*R?
R?R?RR?R? R::R?)  rt   i  i  i   i@8  p  ru   Q rv     rw    rx    F ry   逗 rz   ) rP   loggingr^   uaclientr   r   r   r   r   uaclient.apir!   2uaclient.api.u.pro.attach.auto.full_auto_attach.v1r   r	   (uaclient.api.u.pro.status.is_attached.v1r
   uaclient.configr   uaclient.daemonr   uaclient.filesr   r   	getLoggerreplace_top_level_logger_name__name__r0   rN   FLAG_FILE_PATHr3   r?   rs    r   r   <module>r      se       = = 5 B $ 8 /::8DE( B00	l
r   