o
    x[hÓ  ã                   @   sP   d dl Z d dlZd dlmZmZmZ d dlmZ e  e	¡Z
G dd„ dejƒZdS )é    N)ÚhandlersÚ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   s6   t j | t¡ | d¡| _d | _|r| ¡ | _d S d S )NÚ	boothooks)r   ÚHandlerÚ__init__r   Ú	get_ipathÚboothook_dirÚinstance_idÚget_instance_id)ÚselfÚpathsÚ
datasourceÚ_kwargs© r   ú>/usr/lib/python3/dist-packages/cloudinit/handlers/boot_hook.pyr	      s   ÿzBootHookPartHandler.__init__c                 C   sJ   t  |¡}tj | j|¡}t jt  |¡| jd d�}t  	|| 
¡ d¡ |S )Nr   )ÚprefixiÀ  )r   Úclean_filenameÚosÚpathÚjoinr   Ústrip_prefix_suffixÚdos2unixÚprefixesÚ
write_fileÚlstrip)r   ÚpayloadÚfilenameÚfilepathÚcontentsr   r   r   Ú_write_part    s   
ÿzBootHookPartHandler._write_partc                 C   sš   |t jv rd S |  ||¡}z| jrdt| jƒini }t d¡ tj|g|dd� W d S  tjy<   t	 
td|¡ Y d S  tyL   t	 
td|¡ Y d S w )NÚINSTANCE_IDzExecuting boothookF)Ú
update_envÚcapturez#Boothooks script %s execution errorz'Boothooks unknown error when running %s)r   ÚCONTENT_SIGNALSr"   r   ÚstrÚLOGÚdebugr   ÚProcessExecutionErrorr   ÚlogexcÚ	Exception)r   ÚdataÚctyper   r   Ú	frequencyr    Úenvr   r   r   Úhandle_part)   s"   
ÿý

ÿÿzBootHookPartHandler.handle_partN)Ú__name__Ú
__module__Ú__qualname__r   r	   r"   r1   r   r   r   r   r      s
    	r   )Úloggingr   Ú	cloudinitr   r   r   Úcloudinit.settingsr   Ú	getLoggerr2   r(   r   r   r   r   r   r   Ú<module>   s   

