관리-도구
편집 파일: _pluginrunner.cpython-39.pyc
a V��d � @ s| d dl Z d dlZd dlZd dlmZmZmZ d dlmZ d dl Z d dl Z d dlmZ d dlmZ dd� ZG dd � d e�ZdS ) � N)�LsmError�error�ErrorNumber)�cmd_line_wrapper)� SocketEOF)� TransPortc s$ � du r| S t � �fdd�| D ��S )z{ This method does not check whether lsm_obj contain requested property. The method caller should do the check. Nc 3 s | ]}t |� ��kr|V qd S )N)�getattr)�.0Zlsm_obj�� search_key�search_value� �7/usr/lib64/python3.9/site-packages/lsm/_pluginrunner.py� <genexpr> s �z"search_property.<locals>.<genexpr>)�list)Zlsm_objsr r r r r �search_property s r c @ s, e Zd ZdZedd� �Zdd� Zdd� ZdS ) �PluginRunnerz] Plug-in side common code which uses the passed in plugin to do meaningful work. c C s( zt | � W dS ty" Y dS 0 dS )z4 Returns True if val is an integer. TFN)�int� ValueError)�valr r r � _is_number$ s zPluginRunner._is_numberc C s� d| _ t|�dkr�t�|d �r�z�t|d �}tt�|tjtj ��| _ z|� | _W nN ty� } z6t �� }| j �dddt|� � tj|� �W Y d }~n d }~0 0 W q� ty� tt�� � td� t �d� Y q�0 nd| _ t|� d S ) NF� � r i����zError instantiating plug-in zPlug-in exiting.T)�cmdline�lenr r r r �socketZfromfdZAF_UNIXZSOCK_STREAM�tp�plugin� Exception�sys�exc_info� send_error�str�sixZreraiser � traceback� format_exc�exitr )�selfr �args�fd�eZec_infor r r �__init__/ s* � �$zPluginRunner.__init__c C s� | j r d S d}d}�z^�ztz�| j�� }|d }|d }|d }t| j|�r~|d u rbt| j|�� }q�t| j|�f i |d ��}nttjd��| j� |� |dkr�d}|d kr�d}| j� � W �q�W q t�y } z,tt �� � | j�|d t|�� W Y d }~qd }~0 t�yJ } z,tt �� � | j�|dt|�� W Y d }~qd }~0 t�y� } z$| j�|| j| j| j� W Y d } ~ qd } ~ 0 0 qW n� t�y� |�r�td� Y n� tj�y� } z4| jtjk�r�td� ntd t �� � W Y d } ~ nbd } ~ 0 t�yT td t �� � z | j�|tjdtt �� �� W n t�yN Y n0 Y n0 W |�r�| j�� t�d� n|�r�| j�� t�d� 0 d S )NFr �method�id�paramszUnsupported operationZplugin_registerT�plugin_unregisteriD���i����z!Client went away, exiting plug-inz Unhandled exception in plug-in! zUnhandled exception in plug-inr )r r Zread_req�hasattrr r r r Z NO_SUPPORTZ send_resp�closer r r$ r% r! r"