o
    f                     @   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   

