관리-도구
편집 파일: inventory.cpython-39.pyc
a ����,�g�����������������������@���sP���d�dl�Z�d�dlZd�dlmZ�dgZej���ZG�dd��de�Z G�dd��de�Z dS�)�����N)�consts� Inventoryc�������������������@���s\���e�Zd�ZdZddd�Zdd��Zdd ��Zd d��Zdd ��Zdd��Z dd��Z dd��Zddd�ZdS�)r���z� Inventory object can handle information about available hardware devices. It also informs the plugins about related hardware events. NTc�����������������C���s����|d�ur||�_�n t���|�_�|d�u�r(tj}|�|�j��|�_|d�u�rDtj}|rvz|�j�|��W�n�t yt���t �d��Y�n0�|d�u�r�t��}||�_ d�|�_i�|�_d�S�)Nz�cannot set udev monitor receive buffer size, we are probably running inside container or with limited capabilites, TuneD functionality may be limited)� _udev_context�pyudevZContextZMonitorZfrom_netlink� _udev_monitorr���ZCFG_DEF_UDEV_BUFFER_SIZE�set_receive_buffer_size�EnvironmentError�logZwarning�_MonitorObserverFactory�_monitor_observer_factory�_monitor_observer�_subscriptions)�selfZudev_contextZudev_monitor_clsZmonitor_observer_factoryZbuffer_sizer�����r����</usr/lib/python3.9/site-packages/tuned/hardware/inventory.py�__init__���s$���� zInventory.__init__c�����������������C���s|���z4zt�j�|�j||�}W�n�t�jy0���d}Y�n0�W�nB�tyv���zt�j�|�j||�}W�n�t�jyp���d}Y�n0�Y�n0�|S�)z9Get a pyudev.Device object for the sys_name (e.g. 'sda').N)r���ZDevices� from_namer���ZDeviceNotFoundByNameError�AttributeErrorZDevice)r���� subsystemZsys_name�dr���r���r���� get_device)���s����zInventory.get_devicec�����������������C���s���|�j�j|d�S�)z)Get list of devices on a given subsystem.)r���)r���Zlist_devices)r���r���r���r���r����get_devices8���s����zInventory.get_devicesc�����������������C���s����|j�|�jvrd�S�tj}|jsJ|dkrJt�d|tjf���t� tj��d}q|js^t� d|���|�j|j��D�]T\}}z|||��W�qj�ty��}�z$t�d|���t� |��W�Y�d�}~qjd�}~0�0�qjd�S�)Nr���zLDevice '%s' is uninitialized, waiting '%.2f' seconds for its initialization.���zoUnsuccessfully waited for device '%s' initialization, continuing with uninitialized device, problems may occur.z+Exception occured in event handler of '%s'.)r���r ���r���Z!HOTPLUG_WAIT_FOR_DEV_INIT_RETRIESZis_initializedr ����debugZHOTPLUG_WAIT_FOR_DEV_INIT_DELAY�time�sleep�warn� Exception�error� exception)r���ZeventZdeviceZretry�plugin�callback�er���r���r����_handle_udev_event<���s����zInventory._handle_udev_eventc�����������������C���s\���t��d||f���||f}||�jv�r6|�j|��|��n"|g|�j|<�|�j�|��|�j����dS�)z7Register handler of device events on a given subsystem.zadding handler: %s (%s)N)r ���r���r ����appendr���Z filter_by�start)r���r ���r���r!���� callback_datar���r���r���� subscribeO���s���� zInventory.subscribec�����������������C���s6���|�j�d�u�r2t�d��|�j�|�j|�j�|�_�|�j�����d�S�)Nzstarting monitor observer)r���r ���r���r����creater���r#���r%����r���r���r���r����start_processing_events[���s���� z!Inventory.start_processing_eventsc�����������������C���s(���|�j�d�ur$t�d��|�j�����d�|�_�d�S�)Nzstopping monitor observer)r���r ���r����stopr)���r���r���r����stop_processing_eventsa���s���� z Inventory.stop_processing_eventsc�����������������C���sF���|�j�|�D�]6}|\}}||kr t�d||f���|�j�|��|��q d�S�)Nzremoving handler: %s (%s))r ���r ���r����remove)r���r ���r���r&���Z_pluginr!���r���r���r����_unsubscribe_subsystemg���s ����z Inventory._unsubscribe_subsystemc�����������������C���s^���g�}|�j�D�]<}|du�s||kr |��||��t|�j�|��dkr |�|��q |D�]}|�j�|=�qLdS�)z4Unregister handler registered with subscribe method.Nr���)r ���r.����lenr$���)r���r ���r���Zempty_subsystemsZ _subsystemr���r���r����unsubscriben���s���� zInventory.unsubscribe)NNNNT)N) �__name__� __module__�__qualname__�__doc__r���r���r���r#���r'���r*���r,���r.���r0���r���r���r���r���r��� ���s��� c�������������������@���s���e�Zd�Zdd��ZdS�)r ���c�����������������O���s���t�j|i�|��S�)N)r���ZMonitorObserver)r����args�kwargsr���r���r���r(���{���s����z_MonitorObserverFactory.createN)r1���r2���r3���r(���r���r���r���r���r ���z���s���r ���)r���Z tuned.logsZtunedr����__all__Zlogs�getr ����objectr���r ���r���r���r���r����<module>���s��� q