o
    f                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ	 e
eZdZejdejdejdiZd	d
 Zdd Zdd ZdS )    N)StringIO)util)version   )z2Cloud-init %(version)s received SIGINT, exiting...   )z3Cloud-init %(version)s received SIGTERM, exiting...r   )z3Cloud-init %(version)s received SIGABRT, exiting...r   c                 C   sz   ||ks| sd S t | }d|d  }|d||jf  |d||jf  |d||jf  t| j|d || d S )N    z%sFilename: %s
z%sFunction: %s
z%sLine number: %s
r   )inspectgetframeinfowritefilenamefunctionlineno_pprint_framef_back)framedepth	max_depthcontents
frame_infoprefix r   :/usr/lib/python3/dist-packages/cloudinit/signal_handler.pyr      s   
r   c                 C   sb   t |  \}}|dt i }t }|d|  t|dt| tj|	 t
tjd t| d S )Nr   z%s
r   )log	log_level)EXIT_FORvrversion_stringr   r   r   BACK_FRAME_TRACE_DEPTHr   	multi_loggetvalueLOGloggingERRORsysexit)signumr   msgrcr   r   r   r   _handle_exit)   s   r)   c                  C   s.   d} t  D ]}t|t q| tt 7 } | S )Nr   )r   keyssignalr)   len)sigs_attachedr&   r   r   r   attach_handlers3   s
   r.   )r	   r"   r+   r$   ior   	cloudinitr   r   r   	getLogger__name__r!   r   SIGINTSIGTERMSIGABRTr   r   r)   r.   r   r   r   r   <module>   s    
	
