U
    L¬÷d  ã                	   @   s’   d dl Z d dlZd dlmZ d dlmZ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)Úatomic_helperÚ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   sR   d}t  ¡ s,t d¡rd}ntd| › dƒ‚t |dd| g¡\}}| ¡ }t|ƒS )NÚdateZgdatez-Unable to parse timestamp without GNU date: [ú]z+%s.%3Nz-d)r   Zis_Linuxr   ZwhichÚ
ValueErrorÚstripr   )r   ÚcmdÚoutÚ_r   r	   r	   r   r   6   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_typer6   ZfinishÚresultr4   )	r   ÚendswithÚjoinr$   ÚlstripÚreplaceÚstage_to_descriptionÚrstripr    )ÚlineZamazon_linux_2_sepZ
separatorsÚfoundÚsepZtimehostZeventstrr   ZextraZhostnamer6   Zstage_and_timestampZ
event_namer'   Zevent_descriptionZ_pymodloglvlÚeventr7   Zdescr	   r	   r   Úparse_ci_loglineD   s\    





ûrB   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
)	Úanyr#   Ú
splitlinesÚ	readlinesrB   ÚsysÚstderrÚwriteÚappend)ÚcisourceZrawdataZeventsrA   ZCI_EVENT_MATCHESÚdatar>   Úmatchr	   r	   r   Údump_eventsš   s$    

rM   c                  C   s2   t tjƒdkrttjd ƒ} ntj} t t| ƒ¡S )Nr   )ÚlenrF   ÚargvÚopenÚstdinr   Z
json_dumpsrM   )rJ   r	   r	   r   Úmain´   s    rR   Ú__main__)NN)r
   rF   r   r2   r   r   r   r<   r   r   r   r    r   rB   rM   rR   Ú__name__Úprintr	   r	   r	   r   Ú<module>   s,   øV
	