o x[h @sddlZddlZddlmZmZddlmZmZmZddddddd d d Zd Z d Z dZ ddZ ddZ ddZddZdddZddZedkrOeedSdS)N)datetimetimezone) atomic_helpersubputilzfinished running cloud-initz%starting search for local datasourcesz!searching for network datasourceszrunning config moduleszfinalizing moduleszrunning modules forzrunning single module )finishedz init-local init-networkinitzmodules-configz modules-finalmodulessinglez%Y-%m-%d %H:%M:%S,%fz%b %d %H:%M:%S.%f %Yz%b %d %H:%M:%S %YcCsddtddD}|d|vr6t}d|vrt}t|dttj|j t j d}| }t|Sd |vrMt|t j t j d}| }t|St|}t|S) NcSsg|]}tj|qS)calendar month_abbr).0mr r 8/usr/lib/python3/dist-packages/cloudinit/analyze/dump.py sz#parse_timestamp.. r. )tzinfo,)rangesplit DEFAULT_FMTCLOUD_INIT_JOURNALCTL_FMTrstrptimestrnowyearreplacerutc timestampCLOUD_INIT_ASCTIME_FMTparse_timestamp_from_datefloat) timestampstrmonthsFMTdtr#r r rparse_timestamps*  r+cCsdtddgjvS)zGNU date includes a string containing the word GNU in it in help output. Posix date does not. Use this to indicate on Linux systems without GNU date that the extended parsing is not available. GNUdatez--help)rstdoutr r r r has_gnu_date9sr/cCsRts tdr d}ntrd}ntd|dtt|ddd|gjS)Ngdater-z-Unable to parse timestamp without GNU date: []z-uz+%s.%3Nz-d) ris_Linuxrwhichr/ ValueErrorr&r.strip)r'r-r r rr%Bs r%cCsd}dd|g}d}|D] }||vrd}nq |sdS||\}}|dr1d|dd }d |vrQ|d \}}|d |d7}d|vrP|d } n |d } ||krh|}|jd d d }n || d}d|vrd} d|vr|dd } | d\} } | dddd} | dkrd} ndSt| }n|dd\}} } || d }| d|t|d| dd}|ddkr|dd}||d d}||d<||d<|S)Nz cloud-init[z - z [CLOUDINIT] FT:rrrz,%sr)maxsplit Cloud-init v.startrunningz at '-r r cloudinit)name descriptionr#origin event_typerDfinishresultrB) rendswithjoinr5lstripr!stage_to_descriptionrstripr+)lineamazon_linux_2_sep separatorsfoundseptimehosteventstrr'extrahostnamerDstage_and_timestamp event_name_event_description _pymodloglvleventrFdescr r rparse_ci_loglinePsb       r\c Csg}d}gd}t||gstd|r|}n|}|D](}|D]#}||vrFzt|}Wnty>tjdYnw|rF||q#q||fS)N)zstart:zfinish:r9z2Either cisource or rawdata parameters are requiredzSkipping invalid entry ) anyr4 splitlines readlinesr\sysstderrwriteappend)cisourcerawdataeventsrZCI_EVENT_MATCHESdatarLmatchr r r dump_eventss*      rjcCs2ttjdkrttjd}ntj}tt|S)Nr)lenr`argvopenstdinr json_dumpsrj)rdr r rmainsrp__main__)NN)r r`rrr@rrrrJr$rrr+r/r%r\rjrp__name__printr r r rs2   V