U
    ¯AdÅ  ã                	   @   sŽ   d dl Z d dlZd dlmZ d dlmZmZ ddddddd	d
dœZdZdZdZ	dd„ Z
dd„ Zdd„ Zddd„Zdd„ ZedkrŠeeƒ ƒ dS )é    N)Údatetime)ÚsubpÚutilzfinished running cloud-initz%starting search for local datasourcesz!searching for network datasourceszrunning config moduleszfinalizing moduleszrunning modules forzrunning single module )Zfinishedz
init-localúinit-networkÚinitzmodules-configzmodules-finalÚmodulesZsinglez%Y-%m-%d %H:%M:%S,%fz%b %d %H:%M:%S.%f %Yz%b %d %H:%M:%S %Yc                 C   sŽ   dd„ t ddƒD ƒ}|  ¡ d |kr^t}d| kr4t}t | d tt ¡ jƒ |¡}| 	d¡}n(d	| kr~t | t
¡}| 	d¡}nt| ƒ}t|ƒS )
Nc                 S   s   g | ]}t j| ‘qS © )ÚcalendarZ
month_abbr)Ú.0Úmr   r   ú8/usr/lib/python3/dist-packages/cloudinit/analyze/dump.pyÚ
<listcomp>    s     z#parse_timestamp.<locals>.<listcomp>é   é   r   Ú.ú z%s.%fú,)ÚrangeÚsplitÚDEFAULT_FMTÚCLOUD_INIT_JOURNALCTL_FMTr   ÚstrptimeÚstrZnowZyearÚstrftimeÚCLOUD_INIT_ASCTIME_FMTÚparse_timestamp_from_dateÚfloat)ÚtimestampstrZmonthsZFMTZdtÚ	timestampr   r   r   Úparse_timestamp   s     ÿr   c                 C   s&   t   ddd| g¡\}}| ¡ }t|ƒS )NÚdatez+%s.%3Nz-d)r   Ústripr   )r   ÚoutÚ_r   r   r   r   r   5   s    r   c                 C   sà  d}dd|g}d}|D ]}|| krd} q,q|s4d S |   |¡\}}| d¡rbd |  ¡ dd	… ¡}d
|kr¢|  d
¡\}}|d|  ¡ d  7 }d|krâ|  ¡ d	 }	n@|  ¡ d	 }	||krÐ| ¡ }|j ddd }n|  |	¡d  ¡ }d|krLd}
d|kr>|  d¡d  ¡ }|  d¡\}}| dd¡ dd¡}|dkrBd}nd S t| }n(|  ¡ dd… \}}
}|  |¡d  ¡ }| d¡|t|ƒd|
 d¡dœ}|d dkrÜ|  d¡d }|  |¡d  d¡ ¡ }||d< | ¡ |d< |S )Nz cloud-init[z - z [CLOUDINIT] FTú:r   r   éÿÿÿÿr   z,%sr   )ÚmaxsplitúCloud-init v.ÚstartÚrunningz at ú'Ú ú-r   r   é   Ú	cloudinit)ÚnameÚdescriptionr   ÚoriginÚ
event_typer2   ZfinishÚresultr0   )	r   ÚendswithÚjoinr!   ÚlstripÚreplaceÚstage_to_descriptionÚrstripr   )ÚlineZamazon_linux_2_sepZ
separatorsÚfoundÚsepZtimehostZeventstrr   ZextraZhostnamer2   Zstage_and_timestampZ
event_namer#   Zevent_descriptionZ_pymodloglvlÚeventr3   Zdescr   r   r   Úparse_ci_logline;   s\    





ûr>   c              
   C   sœ   g }d }dddg}t | |gƒs&tdƒ‚|r4| ¡ }n|  ¡ }|D ]R}|D ]H}||krHzt|ƒ}W n  tk
r€   tj d¡ Y nX |rH| |¡ qHq@||fS )Nzstart:zfinish:r'   z2Either cisource or rawdata parameters are requiredzSkipping invalid entry
)	ÚanyÚ
ValueErrorÚ
splitlinesÚ	readlinesr>   ÚsysÚstderrÚwriteÚappend)ÚcisourceZrawdataZeventsr=   ZCI_EVENT_MATCHESÚdatar:   Úmatchr   r   r   Údump_events‘   s$    

rJ   c                  C   s2   t tjƒdkrttjd ƒ} ntj} t t| ƒ¡S )Nr   )ÚlenrC   ÚargvÚopenÚstdinr   Z
json_dumpsrJ   )rG   r   r   r   Úmain«   s    rO   Ú__main__)NN)r	   rC   r   r.   r   r   r8   r   r   r   r   r   r>   rJ   rO   Ú__name__Úprintr   r   r   r   Ú<module>   s,   øV
	