
"·T`4  ã               @   sÂ   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 d  d l m	 Z
 e j 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)Úlog)Úutil)Úversioné   ú2Cloud-init %(version)s received SIGINT, exiting...é   ú3Cloud-init %(version)s received SIGTERM, exiting...ú3Cloud-init %(version)s received SIGABRT, exiting...c             C   s    | | k s |  r d  St  j |  ƒ } d | d } | j d | | j f ƒ | j d | | j f ƒ | j d | | j f ƒ t |  j | d | | ƒ d  S)Nú é   z%sFilename: %s
z%sFunction: %s
z%sLine number: %s
r   )ÚinspectZgetframeinfoÚwriteÚfilenameZfunctionÚlinenoÚ_pprint_frameÚf_back)ÚframeZdepthZ	max_depthÚcontentsZ
frame_infoÚprefix© r   ú:/usr/lib/python3/dist-packages/cloudinit/signal_handler.pyr      s    r   c             C   s‰   t  |  \ } } | d t j ƒ  i } t ƒ  } | j d | ƒ t | d t | ƒ t j | j	 ƒ  d d d d d t
 ƒt j | ƒ d  S)	Nr   z%s
r   ZconsoleTÚstderrFr   )ÚEXIT_FORÚvrZversion_stringr   r   r   ÚBACK_FRAME_TRACE_DEPTHr   Z	multi_logÚgetvalueÚLOGÚsysÚexit)Úsignumr   ÚmsgÚrcr   r   r   r   Ú_handle_exit*   s    	r#   c              C   sA   d }  x$ t  j ƒ  D] } t j | t ƒ q W|  t t  ƒ 7}  |  S)Nr   )r   ÚkeysÚsignalr#   Úlen)Zsigs_attachedr    r   r   r   Úattach_handlers5   s
    r'   )r   r   )r	   r   )r
   r   )r   r%   r   Úior   Z	cloudinitr   Zloggingr   r   r   Z	getLoggerÚ__name__r   r   ÚSIGINTÚSIGTERMÚSIGABRTr   r   r#   r'   r   r   r   r   Ú<module>	   s   		