BYPASS SHELL BY ./RAZORGANZ
Server: nginx/1.20.1
System: Linux iZdzfnv9mwfppeZ 5.10.134-19.2.al8.x86_64 #1 SMP Wed Oct 29 22:47:09 CST 2025 x86_64
User: apache (48)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //usr/local/sysak/.sysak_components/tools/plugin_system.pyc
�
�]ic@s�ddlZddlZiZdd�Zd�Zd�Zddd��YZddd��YZd	dd
��YZ	ddd��YZ
ded
�ZdS(i����Ncs�fd�}|S(s$插件装饰器,用于注册插件cs$�r|t�<n
|t|j<|S(N(tpluginst__name__(tcls(tname(s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyt	decorators

((RR((Rs9/usr/local/sysak/.sysak_components/tools/plugin_system.pytplugin
scs�fd�}|S(s插件依赖装饰器cs
�|_|S(N(trequired_plugins(R(tdependencies(s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyRs	((RR((Rs9/usr/local/sysak/.sysak_components/tools/plugin_system.pytplugin_requiresscCs
d�}|S(s插件支持 Pod 模式cSs
t|_|S(N(tTruet
enable_pod(R((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyR's	((R((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytplugin_pod_support$s	t
PluginContextcBsGeZd�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(cCsi|_i|_g|_dS(N(t
collect_infostanalysis_infostenable_plugins(tself((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyt__init__/s		cCs|jj|d�S(N(R
tgettNone(Rtplugin_name((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytget_collect_info4scCs||j|<dS(N(R
(RRtcollect_info((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytset_collect_info7scCs|jj|d�S(N(RRR(RR((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytget_analysis_info:scCs||j|<dS(N(R(RRt
analysis_info((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytset_analysis_info=scCsZidd6}xF|jD];}|d}|j|�}|dk	r|j||<qqW|S(s!生成 json 格式的诊断结果s2.0tversionRN(RRRtresult(Rtrestplugin_itemRR((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytgenerate_json_result@s

c
Cswd}xj|jD]_}|d}|j|�}|dk	r|j}|sS|}nt|�dkrr|d7}n|tj|ddt�7}|jrV|j	rV|j
rV|tjtjd|jddt��7}|tjd	�7}|tjtjd
|j	ddt��7}|tjd	�7}|tjtjd|j
ddt��7}n|tj|j
�7}qqW|S(
s$生成输出到终端的文本信息tRis

iPtshows概述:
%siRs
s异常原因:
%ss处理建议:
%sN(RRRttitletlent	mem_utilstprint_titletFalsetsummarytreasont
suggestiont
to_unicodet
print_texttrender_text(RR,RRRR"((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytgenerate_render_textJs6
		
						 (	Rt
__module__RRRRRRR-(((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyR.s						
tPluginCollectInfocBs/eZd�Zdd�Zd�Zd�ZRS(cCs
i|_dS(N(tdata(R((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyRrscCs|jj||�S(N(R0R(Rtktdefault((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytloaduscCs||j|<dS(N(R0(RR1tv((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytstorexscCs
||jkS(N(R0(RR1((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytexists{sN(RR.RRR3R5R6(((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyR/qs		tPluginAnalysisInfocBseZd�ZRS(cCs:d|_d|_d|_d|_i|_d|_dS(NR (R"R'R(R)RR,(R((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyR�s					(RR.R(((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyR7st
PluginBasecBsMeZejZd�Zejd��Zejd��Ze	d��Z
RS(cKs
||_dS(N(tparams(Rtkwargs((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyR�scCsdS(s$插件可以在本钩子收集数据,并将收集的数据存储到 context 当中
        但是不应该在此阶段进行结论分析
        1. 在调用本插件的分析钩子之前,插件系统会保证所有通过 @memgraph_plugin_requires
           依赖的插件的信息都已经收集完成,但不保证其他插件的信息已经收集完成;
        2. 插件应当在此阶段收集数据,并将数据输出到 Context。
        @params: context: MemgraphPluginContext
        @return: MemgraphPluginCollectInfo
        N((Rtcontext((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytcollect�s
cCsdS(sk插件可以在本钩子进行结论分析,并将结论存储到 context 当中
        1. 在调用结论分析之前,插件系统会保证所有插件的信息收集都已经完成了;
        2. 插件应当在此阶段根据此前本插件收集的信息,或者结合 @memgraph_plugin_requires
           中依赖的插件的信息,进行结论分析,并将分析结果输出到 Contenxt。
           (不要读取 @memgraph_plugin_requires 没有定义的插件的信息,不保证插件存在)
        @params: context: MemgraphPluginContext
        @return: MemgraphPluginAnalysisInfo
        N((RR;((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytanalysis�s
cCst|dt�S(NR
(tgetattrR&(R((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pytsupoort_pod�s(RR.tabctABCMetat
__metaclass__RtabstractmethodR<R=tclassmethodR?(((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyR8�s
		c	sui�t�����fd��|dkrv|sFtjd�ngtj�D]}i|d6id6^qS}n|�_i}x |D]}|d||d<q�WxI|D]A}y�|d||�Wq�tk
r�}tj|�q�Xq�Wxz|D]r}|d}|�krq�n�|}y#|j	��}�j
||�Wq�tk
rl}tj|�q�Xq�W�S(s0根据依赖关系,执行已经注册的插件cs�|�krdStj|�}|dkr>td|��n|rU|j�rUdSt|d�r�x$|jD]}�|||�qnWn|j|i�}|j�r�||d<n||�}|j��}�j||�|�|<dS(NsPlugin %s is not registered.RR
(	RRRt
ValueErrorR?thasattrRR<R(Rtplugin_params_mapR
tplugin_classtrequired_pluginR9tinstanceR(R;texecute_collecttexecuted(s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyRK�s"
t	podDetectRR9N(RRRtpoptkeysRt	ExceptionR$tlog_exception_in_debug_modeR=R(	tselected_pluginsR
RRGRteRRJR((R;RKRLs9/usr/local/sysak/.sysak_components/tools/plugin_system.pytexecute_plugins�s6	0	




(((((
R@R$RRRRRRR/R7R8R&RT(((s9/usr/local/sysak/.sysak_components/tools/plugin_system.pyt<module>s
	
	
C
#