HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/clpackages/__pycache__/packages.cpython-37.opt-1.pyc
B

P$������@s�ddlmZddlmZddlZddlZddlmZddlmZddl	m
Z
mZddlm
Z
mZmZdd	lmZdd
lmZddlmZddlmZmZmZdd
lmZddlmZmZGdd�de�Z dS)�)�print_function)�absolute_importN)�	iteritems)�CloudlinuxLicenseLib)�print_dictionary�replace_params)�
ClQuotaLib�QuotaDisabledException�ClQuotaException�)�parse_cloudlinux_packages_opts)�
LveCtlPackage)�LvectlException)�DEFAULT_PACKAGE�is_active_reseller_limits�lve)�is_admin)�
MySQLGovernor�MySQLGovExceptionc@sTeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	ddd�Z
ddd�ZdS)�CloudlinuxPackagesz4
    Class for run cloudlinux-packages commands
    c
CsDd|_t�|_t�|_t�|_dddddddd	d
dg
|_t�|_	dS)NF�speed�nproc�pmem�vmem�
maxEntryProcs�io�iops�inodesz	mysql-cpuzmysql-io)
�_is_json�dict�_optsr
�_lvectl_pack_libr�_clquota_pack_lib�_LIMITS_KEYSr�_mysql_governor)�self�r&�py/clpackages/packages.py�__init__#s
zCloudlinuxPackages.__init__cCsxt�}|��s"d|_|�ddi�Sd|k|_|�|�|_|j�d�rZt��sZ|�ddi�|jdrl|�	�S|�
�SdS)	z$
        Run command action
        T�resultzCloudlinux license isn't validz--jsonz--for-resellerzLerror: reseller limits are not supported, can not use --for-reseller option.�setN)rZget_license_statusr�_error_and_exit�_parse_argsr �getrZreseller_limit_supported�_set_run�_get_run)r%�argvZlicencer&r&r'�run,s


zCloudlinuxPackages.runcCs&t||j�\}}|s"|�t|��|S)z%
        Parse CLI arguments
        )rrr+r)r%r0Zstatus�datar&r&r'r,AszCloudlinuxPackages._parse_argsc
s�|j}t|dt�r"|d�d�nd�t�fdd�|jD��}t�}|jd}d}|jddk	rt|jd���d�}y|j�	|||jd	�}Wn8t
k
r�}z|�t|j|j
d
��Wdd}~XYnX|d�r|j��s�d|d
<t�|d<d|dd
<�n|j���s*d|d
<t�|d<d|dd
<n�y|j�	|�}Wn�tk
�r�}z*i}t�|d<t|�|dd
<d|d
<Wdd}~XYn<tk
�r�}zi}|j|d<|j
|d<Wdd}~XYnXx>|D]6}	|	d}
|
tk�r�d}
|
|k�r�||
|	dd<�q�Wg}x4|D],}	d|	ddi|	dd<|�|	d��q
W|j���rFd|d<y�|jddk�sp|jd|k�r�|j�|jd�}x^|D]V}	|	d}|tk�r�d}||k�r�||d|	ddd<||d|	ddd<�q�WWn^tk
�rB}z>|ddk�r2d|d<d|k�r2t�|d<t|�|dd<Wdd}~XYnXnd|d<�xR|D�]H}	|	d}
|d�s�|
d=|
dd=|
dik�r�|
d=|d�s�|
d=|d�s�d|
k�r�|
d=|d �s�|
d!=|d"�s�d"|
k�r�|
d"=|d�s|
dd=|
dik�r|
d=|d#�s(d#|
k�r(|
d#=|d$�s^d|
dk�r^|
dd=|
dik�r^|
d=|d%�sVd|
k�rVd|
dk�rV|
dd=|
dik�rV|
d=�qVWt|�|d&<||d<|�|�d'S)(z#
        Run 'get' command
        z--limits�,Nc3s |]}|�p|�kfVqdS)Nr&)�.0�k)�lkr&r'�	<genexpr>Rsz.CloudlinuxPackages._get_run.<locals>.<genexpr>z
--providerz	--packagezunicode-escapez--human-readable-numbers)r)�contextr�errorZquota�errorsz'LVE Manager/quota package not installedz#Quotas not activated on this systemZwarningr8�package�default�limits�allrZcpuZenabledZmySqlGovZmysqlrZdisabledrrrZeprrz	mysql-cpuzmysql-io�itemsr)r �
isinstance�str�splitrr#�encode�decoder!Zget_reseller_package_limitsrr+�messager8r"Zis_clquota_presentZis_clquota_activatedr	r
r�appendr$�is_governor_presentZget_package_limitsr�len�_print_data)r%�oZlimits_keysr)�
reseller_name�package_nameZ
packages_data�eZquotas_dictZpackage_dataZpackage_name_quotaZ
package_namesZpackage_limits_governorZlimits_dictr&)r6r'r/Ks� 
(









 


"

$






"

zCloudlinuxPackages._get_runc
Cs&|jd}|j�d�}|dk	rBt|�sBt|�sB|�dd|id��|jd���d�}t�}|j}t|d	|d
|d|d|d
|d|dg��r:|d	|d
|d|d|d|d
|dd�}|�	|||�tdd�t
|�D��}y|j�|||�Wn:t
k
�r8}z|�t|j|jd��Wdd}~XYnX|d�r�y|j�||d�Wn:tk
�r�}z|�t|j|jd��Wdd}~XYnX|ddk	�s�|ddk	�r|j���ry|j�||d|d�Wn<tfk
�r}z|�t|j|jd��Wdd}~XYnX|�|�dS)z#
        Run 'set' command
        z
--providerz--for-resellerNz5error: reseller limits for %(reseller)s are disabled.Zreseller)r)r8z	--packagezunicode-escapez--speedz--pmemz--vmemz--maxEntryProcsz--nprocz--ioz--iops)rrrrrrrcSsg|]}|ddk	r|�qS)rNr&)r4�xr&r&r'�
<listcomp>�sz/CloudlinuxPackages._set_run.<locals>.<listcomp>z--inodesz--mysql-cpuz
--mysql-ior)r r-rrr+rCrDr�any�%_check_hoster_permissions_for_packagerr!Zset_reseller_package_limitsrrEr8r"r
r$rGZset_package_limitsrrI)r%rK�for_resellerrLr)rJr=rMr&r&r'r.�sB
(
(((
zCloudlinuxPackages._set_runcCs,|dkr(t|�r(d}|�|d|id��dS)NzMerror: hoster cannot manage package limits for reseller's package %(package)sr;)r)r8)rr+)r%rRrLrKrEr&r&r'rQ�sz8CloudlinuxPackages._check_hoster_permissions_for_packageF�successcCs2t|t�r|�|t��d��t||jp*|�dS)z�
        Output data wrapper
        :param: `dict` data - data for output to stdout
        :param: `bool` force_json - always output json format
        )r)�	timestampN)r@r�update�timerr)r%r2Z
force_jsonr)r&r&r'rIs
zCloudlinuxPackages._print_datarc
Cs�|jr$|�dt��i�t|d�nXy tt|d�|�di��Wn6tk
rz}ztdt|�|f�Wdd}~XYnXt�	|�dS)z�
        Print error and exit
        :param dict message: Dictionary with keys "result" as string and optional "context" as dict
        rTTr)r8zError: %s [%s]N)
rrUrVr�printrAr-�KeyError�sys�exit)r%rEZ
error_coderMr&r&r'r+s &z"CloudlinuxPackages._error_and_exitN)FrS)r)�__name__�
__module__�__qualname__�__doc__r(r1r,r/r.rQrIr+r&r&r&r'rs	
0

r)!Z
__future__rrrYrVZfuture.utilsrZ	cllicenserZ	cli_utilsrrZcllimits.clquota_librr	r
Zcl_packages_arg_parserZ
clpackagesr
ZcllimitsrZ	lvectllibrrrZclcommon.cpapirZclcommon.librr�objectrr&r&r&r'�<module>
s