
"T`                 @   s   d  d l  Z  d  d l Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m	 Z	 e j
 e  Z Gd d   d e j  Z d	 d
   Z e   Z d S)    N)handlers)log)subp)util)PER_INSTANCEc               @   s1   e  Z d  Z d g Z d d   Z d d   Z d S)UpstartJobPartHandlerz#upstart-jobc             K   s#   t  j j |  t  | j |  _ d  S)N)r   Handler__init__r   Zupstart_conf_dupstart_dir)selfpathsZ_kwargs r   @/usr/lib/python3/dist-packages/cloudinit/handlers/upstart_job.pyr	      s    zUpstartJobPartHandler.__init__c       	      C   s   | t  j k r d  S| t k r# d  S|  j s0 d  St j |  } t j j |  \ } } | sc d } | j	   } | d k r | d } t j
 |  } t j j |  j |  } t j | | d  t r t j d d g d d d  S)N z.confi  initctlzreload-configurationZcaptureF)r   ZCONTENT_SIGNALSr   r
   r   Zclean_filenameospathsplitextlowerZdos2unixjoinZ
write_fileSUITABLE_UPSTARTr   )	r   dataZctypefilenameZpayloadZ	frequency_nameZextr   r   r   r   handle_part    s$    	
z!UpstartJobPartHandler.handle_partN)__name__
__module____qualname__prefixesr	   r   r   r   r   r   r      s   	r   c               C   s  t  j j d  s d Sy t j d d g  \ }  } Wn& t k
 r] t j t d  d SYn Xt j	 d |   rt d Sd |  k r d Sd |  k rt  j j d	  s d Sy1 t j d
 d d d g d d d g \ } } Wn& t k
 r t j t d  d SYn Xy* d } t j d d | d | g  d SWnq t j
 k
 r|} z- | j d k rTn t j t d | j  WYd  d  } ~ Xn" t k
 rt j t d  Yn Xd Sd Sd  S)Nz/sbin/initctlFr   versionzinitctl version failedzupstart 1.[0-7][)]z
upstart 0.zupstart 1.8z/usr/bin/dpkg-queryz
dpkg-queryz--showformat=${Version}z--showZupstartZrcsr      zdpkg-query failedz1.8-0ubuntu1.2Zdpkgz--compare-versionsgeTz#dpkg --compare-versions failed [%s]zdpkg --compare-versions failed)r   r   existsr   	Exceptionr   ZlogexcLOGrematchZProcessExecutionErrorZ	exit_code)Zversion_outZ_errZdpkg_verZgooder   r   r   _has_suitable_upstart;   sD    		%	r(   )r   r%   Z	cloudinitr   r   Zloggingr   r   Zcloudinit.settingsr   Z	getLoggerr   r$   r   r   r(   r   r   r   r   r   <module>   s   #.