a Vd@s|ddlZddlZddlZddlmZmZmZddlmZddl Z ddl Z ddl m Z ddlmZddZGdd d eZdS) N)LsmErrorerror ErrorNumber)cmd_line_wrapper) SocketEOF) TransPortcs$dur |Stfdd|DS)z{ This method does not check whether lsm_obj contain requested property. The method caller should do the check. Nc3s |]}t|kr|VqdS)N)getattr).0Zlsm_obj search_key search_value7/usr/lib64/python3.9/site-packages/lsm/_pluginrunner.py sz"search_property..)list)Zlsm_objsr r r r rsearch_propertysrc@s,eZdZdZeddZddZddZdS) PluginRunnerz] Plug-in side common code which uses the passed in plugin to do meaningful work. cCs(zt|WdSty"YdS0dS)z4 Returns True if val is an integer. TFN)int ValueError)valr r r _is_number$s  zPluginRunner._is_numberc Csd|_t|dkrt|drzt|d}tt|tjtj |_ z ||_ WnNt y}z6t }|j dddt|tj|WYd}~n d}~00Wqt ytttdt dYq0nd|_t|dS) NFrizError instantiating plug-in zPlug-in exiting.T)cmdlinelenrrrrsocketZfromfdZAF_UNIXZ SOCK_STREAMtpplugin Exceptionsysexc_info send_errorstrsixZreraiser traceback format_excexitr)selfrargsfdeZec_infor r r__init__/s*    $  zPluginRunner.__init__c Cs|jr dSd}d}z^ztz|j}|d}|d}|d}t|j|r~|durbt|j|}qt|j|fi|d}n ttjd|j ||dkrd}|d krd}|j WqWqt y}z,t t |j|d t|WYd}~qd}~0tyJ}z,t t |j|d t|WYd}~qd}~0ty} z$|j|| j| j| jWYd} ~ qd} ~ 00qWnty|rt d Yntj y} z4| jtjkrt d nt d t WYd} ~ nbd} ~ 0tyTt d t z |j|tjdtt WntyNYn0Yn0W|r|jtdn|r|jtd0dS)NFrmethodidparamszUnsupported operationZplugin_registerTplugin_unregisteriDiz!Client went away, exiting plug-inz Unhandled exception in plug-in! zUnhandled exception in plug-inr)rrZread_reqhasattrrrrrZ NO_SUPPORTZ send_respcloserrr$r%r!r"AttributeErrorcodemsgdata _SocketEOFrerrnoZEPIPErZ PLUGIN_BUGr/rr&) r'Z need_shutdownZmsg_idr4r,r.resultveZaeZlsm_errZser r rrunKs|      ( (        zPluginRunner.runN)__name__ __module__ __qualname____doc__ staticmethodrr+r:r r r rrs  r)rr$rZlsmrrrZ lsm.lsmclirr#r7Z lsm._commonrr6Zlsm._transportrrobjectrr r r rs