MOON
Server: Apache
System: Linux s5.yayogua.com.py 6.12.0-124.55.3.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:54:02 EDT 2026 x86_64
User: sanbercountryclu (1012)
PHP: 8.2.33
Disabled: NONE
Upload Files
File: //lib/python3.12/site-packages/tuned/utils/__pycache__/profile_recommender.cpython-312.pyc
�

�]�i9����ddlZddlZddlZddlZddlZddlmZmZ	ddlZ	dZ
ddlmZddl
ZddlmZej"j%�ZGd�d�Zy#dZ
Y�;xYw)�N)�ConfigParser�ErrorTF)�commandsc�(�eZdZdd�Zd�Zdd�Zd�Zy)�ProfileRecommenderc�>�||_t�|_d|_y)N)�
_is_hardcodedr�	_commands�
_chassis_type)�self�is_hardcodeds  �D/usr/lib/python3.12/site-packages/tuned/utils/profile_recommender.py�__init__zProfileRecommender.__init__s��#�$���:�$�.��$��c��tj}|jr|Stj�dk(}|st
j
d�|jtj|��}|�|Si}tjD]F}g}	tj|�}|D]'}tjj!||�}	|	||<�)�Ht#|j%��D] }||}	|j|	|��}|��|cS|S#t$rB}|jtjk7rt
jd|�d|���Yd}~��d}~wwxYw)NrztProfile recommender is running without root privileges. Profiles with virt recommendation condition will be omitted.)�has_rootzerror accessing z: )�consts�DEFAULT_PROFILEr	�os�geteuid�log�warning�process_config�RECOMMEND_CONF_FILE�RECOMMEND_DIRECTORIES�listdir�OSError�errno�ENOENT�error�path�join�sorted�keys)
r�profiler�matching�files�	directory�contents�e�namer!s
          r�	recommendzProfileRecommender.recommends=���"�"�'�	���
�>�
�Z�Z�\�Q�
�(�	��;�;�F�G�
�
 �
 ��!;�!;��!��(�
��
�?�
�%��/�/�i��8�:��z�z�)�$�H��t�
�7�7�<�<�	�4�(�D��E�$�K��0��U�Z�Z�\�"�d�
��+�4��!�!�$��!�:�8����O�	#�

�.���:��w�w�%�,�,���Y�Y�9�a�8�9���:�s�
D�	E�8E�Ec	���d}d}	tjj|�sytddd��}t|_t
|�5}|j||�ddd�|j�D�]�}d}|j|�D�]�}	|j||	d��}
|
dk(rd}
|	d	k(rM|sd}�n[tj|
|jjd
g�dtj�r�nd}�q|	dk(rRtj|
|jjt j"d�
�tj�r��d}��|	ddk(rctjj%|	�r@tj|
|jj|	�tj�r��/d}��3|	dddk(rZt'j(�}|j+�t-|j/tj0|
���dk(s���d}���|	dk(r;|j3�}tj|
|tj4�r���d}���|	dk(s���d}
t6rZt8j:j=t8j:j>d��}	|j�|j@d}
n|stNjQd|z�d}tj|
|
tj4�����d}���|s���tj0d�}|jSd|�}|S	|S#1swY���xYw#tBtDtFf$rK}tI|d�r5|jJtJjLk7rtNjQd|z�Yd}~��d}~wwxYw#tBtDtTf$r&}tNjQd|�d|���Yd}~|Sd}~wwxYw)NF�=�#)�
delimiters�inline_comment_prefixes�strictT)�raw�z^$�virtz	virt-what��system)�no_errorr�/��process�chassis_type�syspurpose_role)�raise_on_error�rolerz/Failed to load the syspurpose										file: %sz\Failed to process 'syspurpose_role' in '%s'									, the syspurpose module is not availablez,[^,]*$zerror processing 'z', )+rr!�isfiler�str�optionxform�open�	read_file�sections�options�get�re�matchr
�execute�Sr�SYSTEM_RELEASE_FILE�exists�procfs�pidstats�reload_threads�len�
find_by_regex�compile�_get_chassis_type�
IGNORECASE�have_syspurpose�
syspurposer'�SyspurposeStore�USER_SYSPURPOSEr)�IOErrorr�KeyError�hasattrrrrr �subr)r�fnamer�matching_profile�syspurpose_error_logged�config�f�sectionrI�option�value�psr<r?�sr*�rs                 rrz!ProfileRecommender.process_config9sN����!��C7�
�'�'�.�.��
���S�C�QV�W�6��6���U��q�
���Q���	��/�/�#�w��E��.�.��)��
�Z�Z���T�Z�
2�U�
����e��&��
��u��
�X�X�e�������}�-�a�0�"�$�$�8��u�
�H�
�
�X�X�e���� � ��"�"��	!�	��$�$� ��u�
��)�s�
�
�W�W�^�^�F�
#�2�8�8�E���� � ��(�"�$�$�,0��u�
��1�+��
"��?�?��b�����	�R�
�
�b�j�j��/�
0�	1�Q�	6��u�
�N�
"��+�+�-�l�
�X�X�e�\�2�=�=�
9��u�
�%�
%�
�d�	����+�+�	�	�	�	)�	)��,� �q��	���
��z�z�&�!��&��	�	�3�5:�;�	<�"&��	���%��r�}�}�	-�	5��u�e*�h
�	���J�	�Q����b�'�*��
�
��{$�z
��	���X���*���1�g��1�7�7�e�l�l�#:�	������
�����"�7�E�	"�7��9�9�E�1�
5�6�6�	���7�s��N3�$N3�
M�BN3�:AN3�A(N3�;A N3�>N3�	N3�(AN3�*M�	AN3�
N3�(N3�N3�M�	N3�N0�%AN+�&N3�+N0�0N3�3O-�O(�(O-c��|j�.tjd|jz�|jSgd�}	tdd�5}t	|j��}ddd�||_|jr.tjd|jz�|jS	tjgd�tjtjd	�
�}|j�\}}|jr%tjd|j|fz�n#|j!�j#�|_|js(tjd
�d|_|jStjd|jz�|jS#1swY��OxYw#t$rtjdz�Y��lttf$r#}tjd|z�Yd}~���d}~wwxYw#ttf$r"}tjd|z�Yd}~��d}~wwxYw)Nz"returning cached chassis type '%s')%r4�Other�Unknown�DesktopzLow Profile Desktopz	Pizza Boxz
Mini Tower�Tower�Portable�Laptop�Notebookz	Hand HeldzDocking Stationz
All In OnezSub NotebookzSpace-savingz	Lunch BoxzMain Server ChassiszExpansion ChassiszSub ChassiszBus Expansion ChassiszPeripheral ChassiszRAID ChassiszRack Mount ChassiszSealed-case PCzMulti-system�
CompactPCI�AdvancedTCA�BladezBlade Enclosing�Tablet�Convertible�
DetachablezIoT GatewayzEmbedded PCzMini PCzStick PCz(/sys/devices/virtual/dmi/id/chassis_typerhz/Unknown chassis type id read from dmi sysfs: %dz"error accessing dmi sysfs file: %szchassis type - %s)�	dmidecodez-szchassis-typeT)�stdout�stderr�	close_fdsz,dmidecode finished with error (ret %d): '%s'z#error executing dmidecode tool : %sz!could not determine chassis type.r4)rr�debugrC�int�read�
IndexErrorr rrZr�
subprocess�Popen�PIPE�communicate�
returncode�strip�decode)r�DMI_CHASSIS_TYPES�sysfs_chassis_type�chassis_type_idr*�p_dmi�
dmi_output�	dmi_errors        rrTz$ProfileRecommender._get_chassis_type�s���	���#��9�9�
1�D�4F�4F�
F�G�
�
�
��Y��9��
7��=�AS��,�1�1�3�4�O�	>�*�/�:�4��
����9�9�
 �4�#5�#5�
5�6�
�
�
��:����?��?�?�:�?�?���5�#�.�.�0��J�	�����I�I�<��@P�@P�R[�?\�\�]�#�)�)�+�2�2�4�D��
�	�	��9�9�
0�1��4��
�	�	���9�9�
 �4�#5�#5�
5�6�	
�	�	��E	>�=��
�R��9�9�
>��
P�Q�
�7�	�9��;�;�3�a�7�8�8��9��&�7�	�:��;�;�4�q�8�9�9��:�sO�G�F3�&G�3BH�3F=�8G�!H�$H�2H�H�I	�'I�I	N)F)T)�__name__�
__module__�__qualname__rr,rrT�rrrrs���
�<G�R0rr)rrHrrNr�tuned.utils.config_parserrr�syspurpose.filesrWrV�tuned.constsr�
tuned.logs�tuned�tuned.utils.commandsr�logsrGrrr�rr�<module>r�sW��	�	��
��9�������)��j�j�n�n���^�^�����s�A�A