Edit File: lve_storage.cpython-311.pyc
� c|9eIB � �B � d dl mZ d dlmZ d dlmZmZ d dlmZ d dl m Z mZmZm Z mZ d dlmZ d dlmZmZmZmZmZ d dlmZmZmZmZmZmZ ed g d �� � Z edg d�� � Z ed g d�� � Z edddg� � Z!dZ"dZ#dZ$dZ%dZ&dZ' G d� de(� � Z)dS )� )�absolute_import)�ClPwd)� resellers�NotSupported)� iteritems)�XmlConfigReader�DEFAULT_PROVIDER�EMPTY_LIMITS�Limits�InheritedLimits)� namedtuple)�paneluserslist�panelpackagesdict�LVP_DEFAULT�LVE_DEFAULT�DEFAULT_PACKAGE)�Dict�Union�Tuple�List�Optional�Iterator�Package��name�provider�limits�Reseller�r �defaultsr �User��id�packager �reseller� is_panel_user� IneritedLimit�value�source�DEFAULTS�ownr$ r% �global�builtinc � � e Zd ZdZ eedd�� � Z eeed�� � Z dd�Z ed� � � Zd� Z ed� � � Zd � Zd � Zd� Zd� Zed � � � Zed� � � Zed� � � Zed� � � Zd� Zd� Zd� Zd� Zd� Zd� ZdS )�LimitsDataStoragea� This class is designed to merge data from xml config & control panel and provide user-friendy interface to work with lve limits (packages, resellers, defaults) What this class can do: - process information from xml config and control panel - re-pack structures for easy data access What this class should not do: - set limits in kernel - know anything about kernel limits Nr r c � � t � � | _ |p t � � | _ d | _ d | _ d | _ d | _ d | _ d S �N) r �_pwdr �_xml_source�_panel_resellers_list� _packages�_users� _resellers� _defaults)�self�_xml_config_readers �Q/opt/cloudlinux/venv/lib64/python3.11/site-packages/cllimitslib_v2/lve_storage.py�__init__zLimitsDataStorage.__init__A sH � ��G�G�� �-�B��1B�1B���%)��"��������������� c �( � | dk rd} n| dk rd} | S )z2 Convert mem to vmem and reversed �vmem�mem� )� limit_names r; �_limit_name_convertz%LimitsDataStorage._limit_name_convertJ s, � � �����J�J� �5� � ��J��r= c �v � | j �, t � � | _ n# t $ r g | _ Y nw xY w| j S )z� Get list of names of panel resellers. If cpapi panel plugin don't support that method, we return empty list )r4 r r �r9 s r; �_get_panel_resellersz&LimitsDataStorage._get_panel_resellersX sS � � �%�-� 0�-6�[�[��*�*��� 0� 0� 0�-/��*�*�*� 0�����)�)s � �1�1c � � | j duS )z@ Not activated reseller doesn't have any limits N)r )r% s r; �_is_active_resellerz%LimitsDataStorage._is_active_resellerg s � � � ��,�,r= c # �J K � | j � � � D ]}|V � �d S r1 )r3 � users_lve_ids�r9 �uids r; �_list_uids_from_ve_cfgz(LimitsDataStorage._list_uids_from_ve_cfgo s9 � � � ��#�1�1�3�3� � �C��I�I�I�I� � r= c � � || j v r | j | S t || j | j � |� � | j d�� � S )ax This method will return User by uid. If we will pass uid of nonexistent user, method return User without any limits, with with DEFAULT_RESELLER_OBJ and with DEFAULT_PKG_OBJ. This trick is needed for validating of limits for nonexistent user in case of migrating limits and entities from another server. Fr"