
"·T`ñ  ã               @   sˆ   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 S)	é    N)Úhandlers)Úlog)Úsubp)Úutil)Ú
PER_ALWAYSc               @   s=   e  Z d  Z d g Z d d „  Z d d „  Z d d „  Z d S)	ÚBootHookPartHandlerz#cloud-boothookc             K   sG   t  j j |  t ƒ | j d ƒ |  _ d  |  _ | rC | j ƒ  |  _ d  S)NZ	boothooks)r   ÚHandlerÚ__init__r   Z	get_ipathÚboothook_dirÚinstance_idZget_instance_id)ÚselfÚpathsZ
datasourceZ_kwargs© r   ú>/usr/lib/python3/dist-packages/cloudinit/handlers/boot_hook.pyr	      s
    	zBootHookPartHandler.__init__c             C   si   t  j | ƒ } t j j |  j | ƒ } t  j t  j | ƒ d |  j d ƒ} t  j	 | | j
 ƒ  d ƒ | S)NÚprefixr   iÀ  )r   Zclean_filenameÚosÚpathÚjoinr
   Zstrip_prefix_suffixZdos2unixÚprefixesZ
write_fileÚlstrip)r   ÚpayloadÚfilenameÚfilepathÚcontentsr   r   r   Ú_write_part#   s    zBootHookPartHandler._write_partc             C   sÃ   | t  j k r d  S|  j | | ƒ } yK t j j ƒ  } |  j d  k	 rY t |  j ƒ | d <t j | g d | ƒWnL t j	 k
 rš t
 j t d | ƒ Yn% t k
 r¾ t
 j t d | ƒ Yn Xd  S)NZINSTANCE_IDÚenvz#Boothooks script %s execution errorz'Boothooks unknown error when running %s)r   ZCONTENT_SIGNALSr   r   ÚenvironÚcopyr   Ústrr   ZProcessExecutionErrorr   ZlogexcÚLOGÚ	Exception)r   ÚdataZctyper   r   Z	frequencyr   r   r   r   r   Úhandle_part+   s    zBootHookPartHandler.handle_partN)Ú__name__Ú
__module__Ú__qualname__r   r	   r   r"   r   r   r   r   r      s   	r   )r   Z	cloudinitr   r   Zloggingr   r   Zcloudinit.settingsr   Z	getLoggerr#   r   r   r   r   r   r   r   Ú<module>   s   