
    ?g                          d dl Z d dlZd dlZd dlZd dlZddlmZ d dlZej                  dkD  rd dl	m
Z
 nd dlZ ej                  ej                         	  G d d      Zy)	    N   )LeaderElectionRecord   r   )
HTTPStatus)levelc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)LeaderElectionc                 \    |t        j                  d       d | _        || _        d| _        y )Nzargument config not passedr   )sysexitobserved_recordelection_configobserved_time_milliseconds)selfr   s     ]/var/www/openai/venv/lib/python3.12/site-packages/kubernetes/leaderelection/leaderelection.py__init__zLeaderElection.__init__)   s3    "HH12  $  / +,'    c                    | j                         rt        j                  dj                  | j                  j
                  j                               dt        _        t        j                  | j                  j                        j                          | j                          | j                  j                          y y )Nz{} successfully acquired leaseT)target)acquirelogginginfoformatr   lockidentity	threadingdaemonThreadonstarted_leadingstart
renew_looponstopped_leading)r   s    r   runzLeaderElection.run7   s    <<>LL9@@AUAUAZAZAcAcde  $ID$8$8$J$JKQQSOO   224 r   c                    t        j                  dj                  | j                  j                  j
                               | j                  j                  }	 | j                         }|ryt        j                  |       ))Nz{} is a followerT)
r   r   r   r   r   r   retry_periodtry_acquire_or_renewtimesleep)r   r&   	succeededs      r   r   zLeaderElection.acquireE   se    '..t/C/C/H/H/Q/QRS++88113IJJ|$ r   c                    t        j                  d       | j                  j                  }| j                  j                  dz  }	 t        t        j                         dz        |z   }d}t        t        j                         dz        |k  rL| j                         }|rn9t        j                  |       t        t        j                         dz        |k  rL|rt        j                  |       y )NzGLeader has entered renew loop and will try to update lease continuously  F)	r   r   r   r&   renew_deadlineintr(   r'   r)   )r   r&   r-   timeoutr*   s        r   r"   zLeaderElection.renew_loopR   s    ^_++88--<<tC$))+,->GIdiikD()G3 557	

<( diikD()G3 

<( r   c                 
   t        j                          }t        j                  j                  |      }| j                  j                  j                  | j                  j                  j                  | j                  j                  j                        \  }}t        | j                  j                  j                  t        | j                  j                        t        |      t        |            }|st        j                  dkD  rt        j                  |j                         d   t"        j$                  k7  rt'        j(                  dj+                  | j                  j                  j                  |j,                               yt        j                  |j                         d   t.        j$                  k7  rNt'        j(                  dj+                  | j                  j                  j                  |j,                               yt'        j(                  dj+                  |j0                               | j                  j                  j3                  | j                  j                  j                  | j                  j                  j                  |      }|du r/t'        j(                  dj+                  |j0                               y|| _        t7        t        j                          dz        | _        y	|| j;                  |      S |j0                  $|j                  |j<                  |j>                  | j;                  |      S | j4                  rQ| j4                  j0                  |j0                  k7  r.t'        j(                  d
j+                  |j0                               | j4                  #|j@                  | j4                  j@                  k7  r,|| _        t7        t        j                          dz        | _        | j                  j                  j                  | j4                  j0                  k7  rd| j8                  | j                  j                  dz  z   t7        |dz        kD  r/t'        j(                  dj+                  |j0                               y| j                  j                  j                  | j4                  j0                  k(  r| j4                  j<                  |_        | j;                  |      S )Nr   codez'Error retrieving resource lock {} as {}Fz{} is trying to create a lock)name	namespaceelection_recordz{} Failed to create lockr,   TzLeader has switched to {}zByet to finish lease_duration, lease held by {} and has not expired)!r(   datetimefromtimestampr   r   getr2   r3   r   r   strlease_durationr   version_infojsonloadsbodyr   	NOT_FOUNDr   r   r   reasonhttplibholder_identitycreater   r.   r   update_lockacquire_time
renew_time__dict__)r   now_timestampnowlock_statusold_election_recordleader_election_recordcreate_statuss          r   r'   z#LeaderElection.try_acquire_or_renewk   s   		--m< ,0+?+?+D+D+H+HI]I]IbIbIgIgHLH\H\HaHaHkHk,m(( "6d6J6J6O6O6X6X589M9M9\9\5]_bcf_gilmpiq"s &(::1667?:CWCWWLL!J!Q!QRVRfRfRkRkRpRpReRlRl"n o ::1667?7CTCTTLL!J!Q!QRVRfRfRkRkRpRpReRlRl"n o LL8??@V@f@fgh 0055<<$BVBVB[B[B`B`GKG[G[G`G`GjGjMc = eM %7>>?U?e?efg#9D .1$))+2D.ED+ &##$:;;//7;N;];];e&33;?R?]?]?e##$:;; D$8$8$H$HL_LoLo$oLL4;;<O<_<_`a'+>+G+G4K_K_KhKh+h#6D .1$))+2D.ED+   %%..$2F2F2V2VV33d6J6J6Y6Y\`6``cfgtw{g{c||LL]ddex  fI  fI  J  K $$--1E1E1U1UU262F2F2S2S"/ 677r   c                    | j                   j                  j                  | j                   j                  j                  | j                   j                  j                  |      }|du r/t        j                  dj                  |j                               y|| _	        t        t        j                         dz        | _        t        j                  dj                  |j                               y)NFz{} failed to acquire leaser,   z)leader {} has successfully acquired leaseT)r   r   updater2   r3   r   r   r   rA   r   r.   r(   r   )r   rK   update_statuss      r   rC   zLeaderElection.update_lock   s    ,,11889M9M9R9R9W9W9=9M9M9R9R9\9\9OQ E!LL5<<=S=c=cde5*-diikD.@*A'@GGH^HnHnopr   N)	__name__
__module____qualname__r   r$   r   r"   r'   rC    r   r   r
   r
   (   s"    ,5%2E8Nr   r
   )r5   r   r(   r;   r   leaderelectionrecordr   r   r:   httpr   r@   basicConfigINFOr
   rS   r   r   <module>rX      sU     
    6 f   ',, 'W Wr   