
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
\me              	   @   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re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-localz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 }| j d |kr^t}d| kr4t}tj| d ttj j |}|j	d}n(d	| kr~tj| t
}|j	d}nt| }t|S )
Nc             S   s   g | ]}t j| qS  )calendarZ
month_abbr).0mr   r   /usr/lib/python3.6/dump.py
<listcomp>    s    z#parse_timestamp.<locals>.<listcomp>      r   . z%s.%f,)rangesplitDEFAULT_FMTCLOUD_INIT_JOURNALCTL_FMTr   ZstrptimestrZnowZyearZ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 j s,tjdrd}ntd|  dtj|dd| g\}}|j }t|S )NZ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}x|D ]}|| krd}P qW |s6d S | j |\}}|jdrddj|j  dd }d
|kr|j d
\}}|d|j  d  7 }d|kr|j  d }	n@|j  d }	||kr|j }|j d	dd	 }n|j |	d j }d|krNd}
d|kr@|j dd	 j }|j d\}}|jddjdd}|dkrDd}nd S t| }n(|j  dd \}}
}|j |d	 j }|jd|t|d|
jdd}|d dkr|j dd }|j |d	 jdj }||d< |j |d< |S ) Nz cloud-init[z - z [CLOUDINIT] FT:r   r   r   r   z,%s)maxsplitzCloud-init v.startZrunningz at ' -r   zinit-network   	cloudinit)namedescriptionr   origin
event_typer/   Zfinishresultr-   r1   r1   )	r   endswithjoinr    lstripreplacestage_to_descriptionrstripr   )lineZamazon_linux_2_sepZ
separatorsfoundsepZtimehostZeventstrr   ZextraZhostnamer/   Zstage_and_timestampZ
event_namer#   Zevent_descriptionZ_pymodloglvleventr0   Zdescr   r   r   parse_ci_loglineD   sZ    






r<   c             C   s   g }d }dddg}t | |gs&td|r4|j }n| j }x^|D ]V}xP|D ]H}||krLyt|}W n  tk
r   tjjd Y nX |rL|j| qLW qBW ||fS )Nzstart:zfinish:zCloud-init v.z2Either cisource or rawdata parameters are requiredzSkipping invalid entry
)	anyr   
splitlines	readlinesr<   sysstderrwriteappend)cisourceZrawdataZeventsr;   ZCI_EVENT_MATCHESdatar8   matchr   r   r   dump_events   s$    



rG   c              C   s2   t tjdkrttjd } ntj} tjt| S )Nr   )lenr@   argvopenstdinr   Z
json_dumpsrG   )rD   r   r   r   main   s    rL   __main__)NN)r	   r@   r   r+   r   r   r   r6   r   r   r   r   r   r<   rG   rL   __name__printr   r   r   r   <module>   s*   V
	