OwlCyberSecurity - MANAGER
Edit File: lvectl_lib.cpython-311.opt-1.pyc
� �����h�C����������������������������d�dl�Z�d�dlZd�dlZd�dlmZ�d�dlmZ�d�dlmZ�d�dl m Z ��G�d��de������������Z�G�d��d ������������ZdS�) �����N)�cpapi)�FormattedException)�exec_utility)�(_convert_memory_value_to_adaptive_formatc�������������������������e�Zd�ZdS�)�LvectlExceptionN)�__name__� __module__�__qualname__��������py/cllimits/lvectl_lib.pyr���r������s���������������Dr ���r���c��������������������������e�Zd�ZdZdZdZdZdZdZdZ dZ d��Zed����������������Z dd �Zdd �Zdd�Zd��Zd ��Zdd�Zd��Zdd�Zd��Zd��Zdd�Zd��Zd��Zd��Zd��Zd��Zd��Zdd�ZdS�)�LveCtlz* Library for work with LVE limits i@B�i�ʚ;Nz/usr/sbin/lvectlc������������������|�����t����������|�j��������dg������������\��}}t����������|������������|�_��������d|�_��������d|�_��������dS�)z5 Object constructor. Get LVE version zlve-versionN)r���� _UTILITY_PATH�int�lve_version� _package_data�_resellers_data)�self�_� s_lve_versions��� r����__init__zLveCtl.__init__$���sC�������(��(:�]�O�L�L���=��}�-�-���!���#����r ���c������������������������t����������j����������������������}�t����������|������������������������������������������������}|���������������������d�������������|S�)zH Get panel users uid list :return: List of uids r���)r���� list_users�list�keys�append)� user_packages�uid_lists��� r����get_panel_users_uid_listzLveCtl.get_panel_users_uid_list-���sB��������(�*�*� �� �*�*�,�,�-�-����������r ���Fc������������������������|�����������������������||��������������||�j��������v�r$t����������j��������|�j��������|���������������������}|d=�|S�t����������j��������|�j��������d���������������������}|d=�|S�)z� Reads limits by user id :param user_id: user/lve id :param human_readable_numbers: if True PMEM and VMEM limits in KBytes, MBytes or GBytes False - in bytes :return: dictionary )�userid�PACKAGEr���)� _load_infor����copy�deepcopy)r����user_id�human_readable_numbers�user_limitss��� r����get_limits_by_user_idzLveCtl.get_limits_by_user_id8���su������� ���.�w��?�?�?��d�(�(�(��-��(:�7�(C�D�D�K��I�&�����m�D�$6�q�$9�:�:��� �"��r ���c�����������������������|�����������������������||�������������t����������j��������|�j�����������������������������|������������������������}|S�)a��� Reads limits by reseller name :param reseller_name: :param: id - user/lve id :param human_readable_numbers: if True PMEM and VMEM limits in KBytes, MBytes or GBytes False - in bytes :rtype: dict )�_load_resellers_infor'���r(���r����get)r���� reseller_namer*����reseller_limitss��� r����get_limits_by_reseller_namez"LveCtl.get_limits_by_reseller_nameM���sA������� �!�!�"8�-�H�H�H��-��(<�(@�(@��(O�(O�P�P���r ���c������������������@����t�����������j�������������������������������������������sdS�d|ddg}|s|���������������������d�������������t ����������|�j��������|������������\��}}t ����������j��������|������������}|dk����rt����������|d����������������������|� ��������������������dg�������������}|r�d d |d���������d���������i|d���������d���������d |d���������d ���������i|d���������d���������|d���������d���������t����������|d���������d���������|������������t����������|d���������d���������|������������d�}|S�dS�)a��� Reads limits by reseller name :param reseller_name: reseller's name :param human_readable_numbers: if True PMEM and VMEM limits in KBytes, MBytes or GBytes False - in bytes :rtype: dict[str, str | dict] N� list-reseller�--json�--with-name�--bytesr����msg�data�DEFAULT�all�SPEED�EP�IO�IOPS�NPROC�PMEM�VMEM)r%����cpu�ep�io�iops�nproc�pmem�vmem)� lvectllib�lve�reseller_limit_supportedr���r���r����json�loadsr���r/���r���) r���r0���r*����lvectl_args�ret_code�std_out�loaded_json�default_info�default_limitss ��� r����#get_default_limits_by_reseller_namez*LveCtl.get_default_limits_by_reseller_name[���sI�������}�5�5�7�7�� ��F�&� �x��O��%�� *����y�)�)�)�(��);�[�I�I���'��j��)�)���q�=�=�!�+�e�"4�5�5�5�"���v�r�2�2���� "�$��|�A��w�7�8�"�1�o�d�+��l�1�o�d�3�4�$�Q���/�%�a���1�@��a��QW�AX�AW�Y��Y�@��a��QW�AX�AW�Y��Y����N��"�!� "�� "r ���c����������������������|�j����������8ddlm}� �t�����������||������������d���������������������}n\#�t����������$�r�d}Y�nNw�xY�w||�j���������v�r!t����������|�j���������|���������d���������������������}n t����������|�j���������d���������d���������������������}|S�)z� Get package name by user id. None package returns as str(None) for user checker compatibility: 'not str(None)' is True :param: id - user/lve id :return: Package name Nr���)�reseller_package_by_uid������r%���)r����clcommon.cpapirW����str� IndexError)r���r)���rW����package_names��� r����get_package_name_by_user_idz"LveCtl.get_package_name_by_user_id~���s����������%�>�>�>�>�>�>� "�"�#:�#:�7�#C�#C�A�#F�G�G������ "�� "�� "�!���� "������$�,�,�,�"�4�#5�g�#>�y�#I�J�J���� #�4�#5�a�#8��#C�D�D���s����.��=�=c������������������$�����d|||rd|��d�ndd�d�S�)Nz+%(what)s set error for uid=%(uid)s%(error)sz [�]rY���)�what�uid�error)�message�contextr���)r����param�lve_id�errs��� r����__set_errorzLveCtl.__set_error����s<������H�$)�&�47�%?�[�#�[�[�[�[�R�A��A�B��B�� Br ���c����������������������|t����������|������������g}d|v�sd|v�r,|���������������������d|���������������������d������������������������|d<���dD�]�}|���������������������|������������}|��t����������|�����������������������������������������������}|dv�r|�j��������dk����r�K|dv�r|�j��������d k����r�[|d k����r|�����������������������������������r|��d�}|���������������������d|��d |������������������t ����������|������������dk����rdS�|���������������������d������������r|���������������������d�������������|r|���������������������d|����������������t����������|�j��������|d�������������\��}} } |dk����r$t����������|�� ��������������������d|| �������������������������dS�)a-�� Set limits for given container id :param: str command: 'set' | 'set-reseller', based on container type :param: int | str container_id: LVE | LVP id for set limits :param: dict limits: new LVE limits. Available keys: speed, vmem, pmem, mep, io, nproc, iops and 'save-all-parameters'. All other keys are ignoring. If some parameter absent on current LVE version (for example pmem on LVE4), it will be ignored too. :param reseller_name: Reseller name �meprD���� maxEntryProcs)�speedrI���rH���rl���rE���rG���rF���N)rH���rG���rF�������)rF�������rm����%z--�=����r���zsave-all-parametersz--save-all-parametersz--reseller=T��stderr�Limits)r[���r/����stripr����isdigitr����lenr���r���r����_LveCtl__set_error)r����command�container_id�limitsr0���rO����k�vrP����outrh���s��� r����_set_container_limits_by_idz"LveCtl._set_container_limits_by_id����s���������L� 1� 1�2���F�?�?�d�f�n�n�&,�j�j��� � �4�8H�8H�&I�&I�F�?�#�R�� -�� -�A�� � �1� � �A��y���A�������A��-�-�-�$�2B�a�2G�2G���H�}�}��!1�Q�!6�!6���G�|�|�� � ���|��G�G�G�����|�A�|�|��|�|�,�,�,�,��{���q� � ��1��:�:�+�,�,�� 8����6�7�7�7��� >����<�]�<�<�=�=�=�)�$�*<�k�RV�W�W�W���#�s��q�=�=�!�$�"2�"2�8�\�3�"O�"O�P�P�P���=r ���c�����������������������d|g}t����������|�j��������|d�������������\��}}}|dk����r$t����������|����������������������d||�������������������������dS�)z� Set limits for given container id :param reseller_id: LVP id or reseller's name or '--all' :type reseller_id: int | str �set-resellerTrs���r���ru���N)r���r���r���ry���)r����reseller_idrO���rP���r���rh���s��� r����#_set_container_limits_by_id_or_namez*LveCtl._set_container_limits_by_id_or_name����s]�������&�{�3��)�$�*<�k�RV�W�W�W���#�s��q�=�=�!�$�"2�"2�8�[�#�"N�"N�O�O�O���=r ���c�����������������������t����������|������������r|����������������������|������������sdS�|����������������������d|||��������������dS�)z� Wrapper for _set_container_limits_by_id, set limits for lve_id; :param int lve_id: user's container id :param limits: dict with limits to set :param reseller_name: Reseller name :return: int rX����set)r0���r���)�boolr^���r����)r���rg���r|���r0���s��� r����set_lve_limits_by_user_idz LveCtl.set_lve_limits_by_user_id����sN���������<�<�� �� @� @�� H� H�� ��1��(�(����m�(�\�\�\��qr ���c������������������4�����|�����������������������d||�������������dS�)�� Wrapper for _set_container_limits_by_id, set limits for lvp_id; :type lvp_id: int :type limits: dict :return: int r����r����r�����r����lvp_idr|���s��� r����set_lvp_limits_by_reseller_idz$LveCtl.set_lvp_limits_by_reseller_id����s!������� �(�(����H�H�H��qr ���c������������������4�����|�����������������������d||�������������dS�)r����zset-reseller-defaultr���r����r����s��� r����set_lvp_defaults_by_reseller_idz&LveCtl.set_lvp_defaults_by_reseller_id����s"������� �(�(�)?���P�P�P��qr ���c������������������������dt����������|������������dg}|�|���������������������d|g�������������t����������|�j��������|������������\��}}|dk����r$t ����������|����������������������d||�������������������������dS�)z� Set unlimited LVE for lve_id :param: lve_id `int`: LVE id :param reseller_name: Reseller name :return: 0 r�����--unlimitedNz --resellerr���� Unlimited)r[����extendr���r���r���ry���)r���rg���r0����argsrP���rh���s��� r����set_lve_unlimitedzLveCtl.set_lve_unlimited����sw��������s�6�{�{�M�2���$��K�K��}�5�6�6�6�$�T�%7��>�>� ��#��q�=�=�!�$�"2�"2�;���"L�"L�M�M�M��qr ���c�����������������������dt����������|������������dg}t����������|�j��������|������������\��}}|dk����r$t����������|����������������������d||�������������������������dS�)z� Set unlimited LVP for reseller; Accepts name or id; :type lvp_id: str | int :return: 0 r����r����r���r�����r[���r���r���r���ry���)r���r����r����rP���rh���s��� r����set_lvp_unlimitedzLveCtl.set_lvp_unlimited����sZ���������F���]�;��$�T�%7��>�>� ��#��q�=�=�!�$�"2�"2�;���"L�"L�M�M�M��qr ���c������������������������dt����������|������������dd���������������������|���������������g}t����������|�j��������|������������\��}}|dk����r$t ����������|����������������������d||�������������������������dS�)z� Reset LVE limits for lve_id. Set default limits for LVE package or system default LVE :param: lve_id `int: LVE id :return: 0 r����� --default=�,r����Default�r[����joinr���r���r���ry���)r���rg���r|���r����rP���rh���s��� r����reset_lve_limitszLveCtl.reset_lve_limits��so��������s�6�{�{�$C����&�1A�1A�$C�$C�D��$�T�%7��>�>� ��#��q�=�=�!�$�"2�"2�9�f�c�"J�"J�K�K�K��qr ���c������������������������dt����������|������������dd���������������������|���������������g}t����������|�j��������|������������\��}}|dk����r$t ����������|����������������������d||�������������������������dS�)zk Reset LVP limits for reseller_name. :param: reseller_name str: :return: 0 r����r����r����r���r����r����)r���r0���r|���r����rP���rh���s��� r����reset_reseller_limitszLveCtl.reset_reseller_limits��sq���������M� 2� 2�4S����&�AQ�AQ�4S�4S�T��$�T�%7��>�>� ��#��q�=�=�!�$�"2�"2�9�m�S�"Q�"Q�R�R�R��qr ���c������������������:�����t����������|�j��������ddg������������\��}}|S�)zO Apply all already configured limits :return: ret code �applyr;���)r���r���)r���rP���rh���s��� r����apply_all_limitszLveCtl.apply_all_limits$��s$������ �%�T�%7�'�5�9I�J�J� ��#��r ���c�����������������������dt����������|������������dg}t����������|�j��������|������������\��}}|dk����r$t����������|����������������������d||�������������������������dS�)z� Disable reseller limits for given name; Equivalent to lvectl remove-reseller <str> :type reseller_name: str :return: 0 zremove-resellerr5���r���zDisable reseller limitsr����)r���r0���r����rP���rh���s��� r����disable_reseller_limitszLveCtl.disable_reseller_limits,��s^�������"�3�}�#5�#5�x�@��$�T�%7��>�>� ��#��q�=�=�!�$�"2�"2�3L�m�]`�"a�"a�b�b�b��qr ���c����������������������i�|�_���������t����������j�������������������������������������������sdS�g�d�}|s|���������������������d�������������t����������|�j��������|������������\��}}t����������j��������|������������}|dk����rt����������|d����������������������t����������j����������������������D�]}|r||k����r�|i�d�|�j���������|<����|���������������������dg�������������D�]|}|d���������� ��������������������d ������������\��}} |r|| k����r�)|| d |d���������i|d���������d |d ���������i|d���������|d���������t����������|d���������|������������d�d�} | |�j���������| d���������<����}dS�)z� Load information about resellers; :type human_readable_numbers: bool :type reseller_name: str | None :return: N)r4���r5���r6���r7���r���r8���)�namer|���r9����ID�:r;���r<���r=���r>���r?���r@���rA���)rC���rD���rE���rF���rG���rH���)�idr����r|���r����)r���rJ���rK���rL���r���r���r���rM���rN���r���r���� resellersr/����splitr���)r���r*���r0���rO���rP���rQ���rR����reseller�id_r����� reseller_infos��� r���r.���zLveCtl._load_resellers_info9��s������� "����}�5�5�7�7�� ��F�@�@�@��%�� *����y�)�)�)�(��);�[�I�I���'��j��)�)���q�=�=�!�+�e�"4�5�5�5����)�)�� N�� N�H��� ��(�!:�!:��6>�"�-M�-M�D� ��*�*��$�����3�3�� H�� H�H� ���,�,�S�1�1�I�C���� ��$�!6�!6����!�8�G�#4�5�"�4�.� �(�4�.�1�$�V�,�%�g�.�D�X�f�EU�E[�]��]� ������M��;H�D� ��v�!6�7�7�# H�� Hr ���c������������������"����|�j����������|����������������������||�������������|�j���������dS�i�|�_��������|�dt����������|������������g}n|�dt����������|������������g}ndg}|���������������������d�������������|s|���������������������d�������������t����������|�j��������|������������\��}}t����������j��������|������������}|dk����rt����������|d����������������������|d���������}|D�]�} i�} | d ���������}|d k����rd}|| d <���d| d ���������i| d<���d| d���������i| d<���t����������| d���������|������������| d<���| d���������| d<���|�j��������dk����r$t����������| d���������|������������| d<���| d���������| d<���|�j��������dk����r| d���������| d<���| |�j��������t����������| d���������������������<�����|�$|�� ��������������������||������������}|r||�j��������d<���dS�d|�j��������vrPi�} d| d <���ddi| d<���ddi| d<���d| d<���d| d<���|�j��������dk����r d| d<���d| d<���|�j��������dk����rd| d<���| |�j��������d<���dS�dS�) z� Loads all package info from lvectl :param human_readable_numbers: if True PMEM and VMEM limits in KBytes, MBytes or GBytes False - in bytes :return: None N�paneluserlimits�paneluserslimitsr5���r7���r���r8���r9���r%���� VE_DEFAULTr:���r;���r<���rC���r>���rE���rB���rI���r=���rD���ro���rA���rH���r@���rG�������r?���rF���r�����0�0K)r���r.���r���r[���r���r���r���rM���rN���r���r���r���r���rU���) r���r*���r$���r����rO���rP���rQ���rR���� json_data�pkg_data� pkg_limits�pkg_name�reseller_defaultss ��� r���r&���zLveCtl._load_infoj��s���������'��%�%�&<�h�G�G�G���)��F�� �����,�c�&�k�k�:�K�K� � !�-�s�8�}�}�=�K�K�-�.�K����8�$�$�$�%�� *����y�)�)�)�(��);�[�I�I���'��j��)�)���q�=�=�!�+�e�"4�5�5�5���'� �!�� A�� A�H��J�� �*�H��<�'�'�$��$,�J�y�!�!&���(9� :�J�u�� %�x��~�6�J�t��!I�(�SY�JZ�J`�"b��"b�J�v��'��~�J�t����1�$�$�%M�h�W]�N^�Nd�&f��&f� �6�"�&.�w�&7� �7�#���1�$�$�%-�f�%5� �6�"�6@�D��s�8�D�>�2�2�3�3��� $� H� H��Si� j� j�� �� �(9��"�1�%����D�&�&�&��J�$-�J�y�!�!&���J�u�� %�s�|�J�t��!%�J�v��"�J�t����1�$�$�%)� �6�"�&)� �7�#���1�$�$�%(� �6�"�$.�D��q�!�!�!�!�'�&r ���)F)N)NN) r ���r ���r����__doc__�MEGAHERZ�GIGAHERZr���r����_packages_limitsr���r���r����staticmethodr"���r,���r2���rU���r^���ry���r����r����r����r����r����r����r����r����r����r����r����r.���r&���r���r ���r���r���r������s�������������������H��H��K�&�M����M��O�$��$��$��������\���������*�������!"��!"��!"��!"�F�����.B��B��B� &Q��&Q��&Q��&Q�P P�� P�� P������������������ �� �� �� ����������� �� �� �����������/H��/H��/H�bK/��K/��K/��K/��K/��K/r ���r���) r'���rM���rJ����clcommonr����clcommon.clexceptionr����cllimits.libr����cllimits.lib.utilsr���r���r���r���r ���r����<module>r�������s�������������������������������������3��3��3��3��3��3��%��%��%��%��%��%��G��G��G��G��G��G� �� �� �� �� �(�� �� �� �]/��]/��]/��]/��]/��]/��]/��]/��]/��]/r ���