Repository URL to install this package:
| 
      
        
        
        Version: 
        
         
          
          4.0.105  ▾
        
         | 
ó
ǍEYc           @   s  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z e j e  Z d   Z	 d   Z
 d   Z d   Z d   Z
 e d k re e j  d	 k r© e   qe e j  d
 k re e j d	  Z e j d  Z e re
 e e  Z e j e  qqn  d S(   s;   
Helper module for systemd service readiness notification.
iÿÿÿÿNc         C   s$   |  j  d  r  d |  d }  n  |  S(   Nt   @t    %si   (   t
   startswith(   t   socket_name(    (    sI   /home/tvault/.virtenv/lib/python2.7/site-packages/oslo_service/systemd.pyt   _abstractify   s    c      	   C   s¨   t  j d  } | r¤ t j t j t j  } t j |  c y7 | j t |   | j	 |  |  rs t  j
 d =n  Wn$ t k
 r t j
 d d t n XWd  QXn  d  S(   Nt
   NOTIFY_SOCKETs   Systemd notification failedt   exc_info(   t   ost   getenvt   sockett   AF_UNIXt
   SOCK_DGRAMt
   contextlibt   closingt   connectR   t   sendallt   environt   EnvironmentErrort   LOGt   debugt   True(   t	   unset_envt   msgt
   notify_sockett   sock(    (    sI   /home/tvault/.virtenv/lib/python2.7/site-packages/oslo_service/systemd.pyt
   _sd_notify$   s    
c           C   s   t  t d  d S(   s   Send notification to Systemd that service is ready.
    For details see
    http://www.freedesktop.org/software/systemd/man/sd_notify.html
    s   READY=1N(   R   t   False(    (    (    sI   /home/tvault/.virtenv/lib/python2.7/site-packages/oslo_service/systemd.pyt   notify2   s    c           C   s   t  t d  d S(   s*  Send notification once to Systemd that service is ready.
    Systemd sets NOTIFY_SOCKET environment variable with the name of the
    socket listening for notifications from services.
    This method removes the NOTIFY_SOCKET environment variable to ensure
    notification is sent only once.
    s   READY=1N(   R   R   (    (    (    sI   /home/tvault/.virtenv/lib/python2.7/site-packages/oslo_service/systemd.pyt   notify_once;   s    c      	   C   s   t  j  t  j t  j  } | j |  | j t |    t j |  D y | j d  } Wn t  j	 k
 rr d SXd | k r d Sd SWd QXd S(   sV  Wait for systemd style notification on the socket.
    :param notify_socket: local socket address
    :type notify_socket:  string
    :param timeout:       socket timeout
    :type timeout:        float
    :returns:             0 service ready
                          1 service not ready
                          2 timeout occurred
    i   i   s   READY=1i    i   N(
   R	   R
   R   t
   settimeoutt   bindR   R   R
   t   recvt   timeout(   R   R    R   R   (    (    sI   /home/tvault/.virtenv/lib/python2.7/site-packages/oslo_service/systemd.pyt   onreadyF   s    
t   __main__i   i   R   (   t   __doc__R   t   loggingR   R	   t   syst	   getLoggert   __name__R   R   R   R   R   R!   t   lent   argvt   floatR    R   R   t   retvalt   exit(    (    (    sI   /home/tvault/.virtenv/lib/python2.7/site-packages/oslo_service/systemd.pyt   <module>   s(