łň
:ÁüIc           @   sĘ   d  d k  Z  d  d k Z d  d k Z d  d k l Z l Z d  d k l Z l Z d  d k	 l
 Z
 d Z d Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d S(   i˙˙˙˙N(   t   sleept   strftime(   t   hide_envt   say(   t   SIGKILLi  i   c         C   sŮ  d } t  |  } t i i |  p t | d | d  Sn d } d } d } xü | | j  oî y t | d  i   } WnÍ t j
 o \ }	 }
 | d 7} t | d d	 d
 |
 | | f  t	 |  | d d j o+ t i
 | t  t | d d	 d |  qIqR | d 7} t i   GHt | d d	 d | | f  t	 |  qR XPqR W| | j o" t | d | d t d   Sn |  o+ t i
 | t  t | d d	 | d  n | i d  } | i d  | | d <| S(   Nt
   skyd_claimi   s    does not existi    i   i   t   rt   Ws   <time>s   %s (%d), wait for %si
   s   force read access on s"   unexpected error (%d), wait for %ss    open-and-read failed @ s   %Y/%m/%d %H:%M:%Ss    claimeds   
i˙˙˙˙t   contents(   R   t   ost   patht   isfilet   skyd_statust   opent   readt   IOErrorR   R    t   chmodt   mode_rwt   syst   exc_infoR   t   mode_wt   splitt   pop(   t   claimt   statust   filepatht   csayt   hidepatht   countt	   count_maxt   naptimeR   t   errnot   strerror(    (    s   skyd_func.pyR   9   sB    
 

	
c      	   C   s¸   d } t  |  } |  d d j oj |  i d  } d i |  d } y t | d  i |  Wq t |  d | d t d	   }  q Xn t i | t	  t
 | d
 d | d  |  S(   Nt   skyd_releaset   numberi    R   s   
t   wi   s    write failed @ s   %Y/%m/%d %H:%M:%SR   s   <time>s	    released(   R   R   t   joinR   t   writeR   R   R	   R   R   R   (   R   R   R   R   R   (    (    s   skyd_func.pyR!   ¨   s    	c   	      C   sP  t  | | |   } | d d j o | Sn | i d  } t   } g  } xö | D]î } t |  d j o qP n | i d  d j o qP n | i d  d j oV | i d  \ } } t |  d j o | | | <q>| d } | | | d | <qP | i d  d j o/ | i | i d  d  t   | | d <qP qP W| | d	 <| S(
   NR"   i    R   t   #t   =i˙˙˙˙i   t   :t   conf(   R   R   t   dictt   lent   findR   t   append(	   t   cffileR   R   R   R)   t   namest   linet   namet   value(    (    s   skyd_func.pyt   skyd_read_confç   s.    	 

c         C   sî   | i  d  } g  } d } xK | D]C } | i d  d j o | i | d | |  q" | d 7} q" Wxe t |  D]W } d | } | i | d  x3 | | D]' } | i d | d | | |  q˘ Wqv W| | d	 <t | |   } | S(
   NR)   i    t   group_R'   i   s   group_%dR(   t   _R   (   R   R,   R-   t   rangeR!   (   R.   R   R)   R   t   nt   keyt   iR1   (    (    s   skyd_func.pyt   skyd_write_conf+  s$      
 )
c          C   sC   t  h  d d <d d <d d <d d <t d  d	 < }  |  S(
   Nt    t   reportt   wmarkt   deadR   i    t   pids   %Y_%j_%H%M%St   time(   R*   R   (   t   run(    (    s   skyd_func.pyt   skyd_empty_runX  s    			c         C   sU   t  t |    } x< | D]. } |  | d } |  | d d j o Pq q Wd } | S(   NR   R>   i˙˙˙˙(   R6   R+   (   t   all_runst   runsRA   R   (    (    s   skyd_func.pyt   skyd_not_runnings  s     	c         C   s   d } t  |   d j oc x` |  i   D]N } xE t t  |  |   D]- } |  | | d d j o | d 7} qC qC Wq& Wn | S(   Ni    R   R>   i   (   R+   t   keysR6   (   t   lst_runsR   t   gruntRA   (    (    s   skyd_func.pyt   skyd_count_runs  s      c      	   C   sâ   d } t  |   d j oĹ HHxŔ |  i   D]Ž } xĽ t t  |  |   D] } |  | | d } | d j oh t | d | d | | f  | | j o t i | t  qŇ t i d | d t | f  i   GHqE qE Wq( Wn d  S(	   Nt   skyd_kill_runsi    R?   i˙˙˙˙t   Is   kill run %d (pid %d)s   ssh s    "kill -%d %d"(	   R+   RF   R6   R   R	   t   killR   t   popenR   (   RG   t   bossR   RH   RA   t	   grunt_pid(    (    s   skyd_func.pyRJ   ą  s      6c      	   C   sv  t  |   d j o_| g |  i   g | d j } d } d | } d } xF t |  D]8 } | d d d d t d  7} | d d d 7} qU Wd | d | d } xż | D]ˇ }	 x¤ t t  |  |	   D] } | d j o | d |	 7} n$ | | d j o | d d 7} n |  |	 | }
 | d |
 d d |
 d	 d |
 d d |
 d 7} qË W| d 7} qŽ W| GHn d  S(   Ni    R;   i   s   %-8ss   --------s    %-7sR   s   %-6sR=   s   %7sR?   s   %16ss   %Y_%j_%H%M%Ss   ------s   -------s   ----------------s   

s   
t    i   s   %7dR@   s    status s   wmark s       pids   --------------s           (   R+   RF   R6   R   (   RG   t   grunt_RN   t   gruntst   max_lent   hdrt   divRA   R0   RH   t   tmp(    (    s   skyd_func.pyt   skyd_show_runsÖ  s.    
    :	c         C   sH   d } | |  d <| |  d <t  |  d j o t | d d |  n |  S(   NR   R"   t   messagei    RK   s   <time>(   R+   R   (   R   t   istatRX   R   (    (    s   skyd_func.pyR     s    

(   R	   R   t   statR@   R    R   t   tinyR   R   t   signalR   R   R   R   R!   R3   R:   RB   RE   RI   RJ   RW   R   (    (    (    s   skyd_func.pys   <module>   s   $2	o	?	D	-			#	%	B