PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` 3 peM"@s|dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z y ddl Z Wne k rtddl Z YnXy ddl Z WnddljZ YnXejddkrddlmZn ddlmZdejkrdejd<ejejdd ZeZiZd Zd d Zd dZddZdZdZdZ ddddddgZ!d*ddZ"d+ddZ#d d!Z$d"d#Z%d$d%Z&Gd&d'd'e j'Z(Gd(d)d)e)Z*dS),zF This file is a library of some essential classes for our agent's use.N3)BytesIO)StringIOLC_ALLCc CsJytjt|Stk rDtttikr:td|Stj|SXdS)Nfloat)localeZatofstr Exceptiontype __builtins__r)valuer'/usr/lib/fm-agent/library/agent_util.py custom_float%s  r<cCsx|D] }|rdSqWdS)NTFr)iterableelementrrrany4s rcCsx|D] }|sdSqWdS)NFTr)rrrrrall;s rcCs"|j|j|jddddS)Ni i@Bi@B)Z microsecondssecondsdays) timedeltarrr total_secondsBsrz/usr/local/sbinz/usr/local/binz /usr/sbinz/usr/binz/sbinz/binFcCsdd}tjj|\}}|r*||rv|SnLdtjkr8dSx.is_exePATHz %r not found) rr splitenviron itertoolschainpathsepADDITIONAL_SEARCH_PATHSjoinr )Zprogramexcr%r$fnamer Zexe_filerrrwhichQs  r0Tcs|dkr|j}tjd}|rdtj|} | rdtj| jd|krd|jd|| jd| jdfSd} dtjj kr,t j |||t j t j |d } |sdSy| j |d \} } Wnxt jk r&} zX| jg}|r|jt| jx6|D].}ytj|tjWqtk rYqXqWdSd} ~ XnXn Gd ddtfdd}t j |||t j t j |d } |sldS|dkr|dkrtjtj|tj|y.| j \} } |dkr|dkrtjdWnnk r4| jg}|r|jt| jx8|D]0}ytj|tjWntk r(YnXqWdSX| j}| sF| } | jd}|rx|jd|||tjdt|<|jd|||f||fS)zNRun a command line call with a timeout after which it will be forcibly killed.Fexecute_command timestampz9Retrieved information from the local cache timeout for %sretcodeoutputNdarwin)shellcwdstdoutstderrenv)timeout Timeout exceeded, process killedc@s eZdZdS)zexecute_command..AlarmN)__name__ __module__ __qualname__rrrrAlarmsrBcsdS)Nr)Zsignumframe)rBrr alarm_handlersz&execute_command..alarm_handlerrrutf8zCreated cache for cmd %s)r4r5r3z %s: %s %s)rFr>rG)rHr>)r'logging getLoggerLOCAL_CACHE_RESULTSgettimedebugsysplatformlower subprocessPopenPIPE communicateTimeoutExpiredpidextendget_process_childrenrkillsignalSIGKILLOSErrorr SIGALRMalarm returncodedecode)cmdr8r7Z kill_treer<r;blockZ cache_timeoutlogZ cached_resultpr9r:ZtepidsrWrDr4r5r)rBrr2csp          r2cCs8tjd|dtjtjd}|j\}}dd|jDS)z?Helper method for killing off child processes when they timeoutz ps --no-headers -o pid --ppid %dT)r7r9r:cSsg|] }t|qSr)int).0rerrr sz(get_process_children..)rRrSrTrUr')rWrer9r:rrrrYs rYc Cs`y$|dd}t|jd}|dStk rZtjdd\}}tj||YnXdS)NZNetworkSettingsZNetworksrZ IPAddressr)listvaluesr rOexc_inforI exception) containerZnetworksZnetworkterrrget_container_ips  rqc Ks6ytj|f|Stk r0tj|jf|SXdS)N)jsonloads TypeErrorra)valkwargsrrr json_loadssrwc@seZdZdddZddZdS)UnixHTTPConnection localhostcKstjj||f|||_dS)N)httplibHTTPConnection__init__r )selfr hostrvrrrr|szUnixHTTPConnection.__init__cCs&tjtjtj}|j|j||_dS)N)socketAF_UNIX SOCK_STREAMconnectr sock)r}rrrrrs zUnixHTTPConnection.connectN)ry)r?r@rAr|rrrrrrxs rxc@sDeZdZdZdZeZddZdddZdd d Z d d Z d dZ dS)PluginZ undefinedcCs||_tjd|j|_dS)Nz plugin %r)schedulerIrJtextkeyrd)r}rrrrr|szPlugin.__init__Fc Csbtj}|jj}|j|i}|r(g||<|j|g}|j||fxt|dkr\|jdqDWdS)Nir)rMrcached_results setdefaultappendlenpop) r}roptionr replacenowcachetcacheresultsrrr cache_results  zPlugin.cache_resultrc Csftj}|jj}|j|i}|j|g}g}x,|| dD]\} } |j|| | fqsR         R