U
    Ld2	                     @   s~   d dl Z d dlmZmZ d dlmZ d dlmZmZm	Z	 e
eZedede	diZdd	 Zd
d Zdd ZG dd deZdS )    N)logutil)Handler)
PER_ALWAYSPER_INSTANCEPER_ONCEzper-bootzper-instancezper-oncec                 C   s   dt |   }|S )Nztext/x-shellscript-)path_map)freqZ	mime_type r
   N/usr/lib/python3/dist-packages/cloudinit/handlers/shell_script_by_frequency.pyget_mime_type_by_frequency   s    r   c                 C   s   t |  }tj||}|S )z]Return the frequency-specific subfolder for a given frequency constant
    and parent folder.)r   ospathjoin)r	   scripts_dirZfreqPathfolderr
   r
   r   get_script_folder_by_frequency   s    r   c                 C   sJ   t j| }t|}t||}t j||}t|}t||d dS )z|Given a filename, a payload, a frequency, and a scripts folder, write
    the payload to the correct frequency-specific pathi  N)	r   r   basenamer   clean_filenamer   r   Zdos2unixZ
write_file)script_pathpayload	frequencyr   filenamer   r   r
   r
   r   write_script_by_frequency"   s    


r   c                   @   s    e Zd ZdZdd Zdd ZdS )ShellScriptByFreqPartHandlerz=Common base class for the frequency-specific script handlers.c                 K   sF   t | t t|g| _|| _|d| _d|krB||d | _d S )NZscriptsr   )r   __init__r   r   prefixesscript_frequencyZ	get_cpathr   )selfr   pathsZ_kwargsr
   r
   r   r   0   s    z%ShellScriptByFreqPartHandler.__init__c                 C   s4   |d k	r0t j|}t|}t||| j| j d S )N)r   r   r   r   r   r   r   r   )r   dataZctyper   r   r   r   r
   r
   r   handle_part8   s    
   z(ShellScriptByFreqPartHandler.handle_partN)__name__
__module____qualname____doc__r   r!   r
   r
   r
   r   r   -   s   r   )r   Z	cloudinitr   r   Zcloudinit.handlersr   Zcloudinit.settingsr   r   r   Z	getLoggerr"   ZLOGr   r   r   r   r   r
   r
   r
   r   <module>   s   
   