o
    w7e                  	   @   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rIee  dS 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 )finishedz
init-localinit-networkinitzmodules-configzmodules-finalmodules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 |v r2t}d| v rt}t| d tt j |}|	d}t|S d	| v rEt| t
}|	d}t|S t| }t|S )
Nc                 S   s   g | ]}t j| qS  )calendar
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strnowyearstrftimeCLOUD_INIT_ASCTIME_FMTparse_timestamp_from_datefloat)timestampstrmonthsFMT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dategdatez-Unable to parse timestamp without GNU date: []z+%s.%3Nz-d)r   is_Linuxr   which
ValueErrorstripr"   )r#   cmdout_r'   r   r   r   r!   6   s   

r!   c                 C   s  d}dd|g}d}|D ]
}|| v rd} nq|sd S |  |\}}|dr1d|  dd	 }d
|v rQ| d
\}}|d|  d  7 }d|v rP|  d	 }	n |  d	 }	||krh| }|j ddd }n	| |	d  }d|v rd}
d|v r| dd  }| d\}}|dddd}|dkrd}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_typerA   finishresultr?   )	r   endswithjoinr/   lstripreplacestage_to_descriptionrstripr(   )lineamazon_linux_2_sep
separatorsfoundseptimehosteventstrr#   extrahostnamerA   stage_and_timestamp
event_namer2   event_description_pymodloglvleventrC   descr   r   r   parse_ci_loglineD   sb   


rY   c              
   C   s   g }d }g d}t | |gstd|r| }n|  }|D ](}|D ]#}||v rFzt|}W n ty>   tjd Y nw |rF|| q#q||fS )N)zstart:zfinish:r6   z2Either cisource or rawdata parameters are requiredzSkipping invalid entry
)	anyr.   
splitlines	readlinesrY   sysstderrwriteappend)cisourcerawdataeventsrW   CI_EVENT_MATCHESdatarJ   matchr   r   r   dump_events   s*   

	rg   c                  C   s2   t tjdkrttjd } ntj} tt| S )Nr   )lenr]   argvopenstdinr   
json_dumpsrg   )ra   r   r   r   main   s   rm   __main__)NN)r   r]   r   r=   r   r   r   rH   r    r   r   r(   r!   rY   rg   rm   __name__printr   r   r   r   <module>   s0   
V	