C)nddlmZmZmZmZddlmZmZddlm Z m Z m Z m Z m Z mZmZddlmZmZmZmZmZGddeZdS) )DictOptionalTupleUnion)LimitsDataStorageDEFAULTS)PackageUserReseller OWN_SOURCERESELLER_SOURCEPACKAGE_SOURCE GLOBAL_SOURCE) BaseValidator ENTITY_USERENTITY_PACKAGEENTITY_RESELLERENTITY_DEFAULTScleZdZd fd ZedZdZdZdZdZ dZ dd Z dd Z dd Z xZS)EpNprocValidatorNcZt|d|_dS)N)_limits_data_storage)super__init__diff_nproc_and_ep)selfr __class__s +py/cllimits_validator/ep_nproc_validator.pyrzEpNprocValidator.__init__s1 .BCCC"$cNd|jd}t|j}||d<|S)Nz&NPROC limit must be greater than EP + z limit, because number of processes and threads within LVE includes also Apache processes/threads, SSH sessions and etc, which enter into LVE. common_msg)rdict _message_dict)rr# message_dicts r r&zEpNprocValidator.message_dictsB  $T5K $ $ $ D.// %/ \"r!c@|dks|dkrd}n|||jzk}|S)NrT)r)repnprocresults r _ep_and_nproc_is_validz'EpNprocValidator._ep_and_nproc_is_valid-s1 A::qFFb4#999F r!cn|j}|j|}t|p |jj}t|p |jj}|||}|jj}|jj} |rt|d<|j |d<nt| |fvrxt|d<|j |d<|tkrd} n| tkrd} nd} | dn=| dt|| j|d<nt| |fvrW| |krQ||d<|tkr|jj|d<na|t$kr|jj|d<nF|t(kr t*|d<n0t| |fvr%| |krt|d<|j |d<d|d | |d<||fS Y :param has_input_limits: User has input limits, which will be set to it affected_entity entity_idr(r)N is inherited from specific_msgzFBoth validated limits (EP, NPROC) inheritance from different sources: z and )r&limits_providerget_user_limitsintr(valuer)r+sourceridr uppergetattr capitalizerpackagenamer resellerrr) ruserr(r)has_input_limitsr& user_limitsr* ep_source nproc_sourceinheritance_limits r _validate_nproc_and_ep_for_userz0EpNprocValidator._validate_nproc_and_ep_for_user5s0 ( *::4@@ +{~+ , ,E4[.455,,R77N) "(/  .9L* +(,L % % L)4 4 4.9L* +(,L %J&&$(!!++$+!!$(!3D3L44$**,,VV ->??FQQSSVV  ( ( i8 8 8\Y=V=V.7L* +N**,0L,= [))o--,0M,> [))m++,; [)  i8 8 8\Y=V=V.9L* +(,L %J+4JJ;GJJ  (|##r!c6|j}|j|}t|p |jj}t|p |jj}|||}|jj}|jj} |rt|d<|j |d<nt| |fvrxt|d<|j |d<|tkrd} n| tkrd} nd} | dn=| dt|| j|d<nwt| |fvr<| |kr6||d<|tkr|jj |d<nF|t"kr t$|d<n0t| |fvr%| |krt|d<|j |d<d|d | |d<||fSr-)r&r3get_package_limitsr5r(r6r)r+r7rr=r r9r:r;r providerrr) rr<r(r)r@r&package_limitsr*rBrCrDs r "_validate_nproc_and_ep_for_packagez3EpNprocValidator._validate_nproc_and_ep_for_packagehs ( -@@II .~(. / /E7^1788,,R77"%, %+2  .r(r)r@r&reseller_limitsr*rBrCrDs r #_validate_nproc_and_ep_for_resellerz4EpNprocValidator._validate_nproc_and_ep_for_resellersY ( .BB8LL /)/ 0 0E8_2899,,R77#&- &,3  .=L* +(0 L % % L)4 4 4.=L* +(0 L %J&&$(!!++$+!!$(!3D3L44$**,,ZZ1BCCJUUWWZZ  ( |##r!cx|j}t|tr|jnt}|j|}t|p |jj }t|p |j j }| ||}|jj } |j j } |rt|d<||d<n}t| | fvrrt|d<||d<| tkrd} n| tkrd} nd} | dn=| dt!|| j |d<||fSrL)r& isinstancer r=rr3get_defaults_limitsr5r(r6r)r+r7rr r9r:r;) rr>r(r)r@r& id_entitydefault_limitsr*rBrCrDs r #_validate_nproc_and_ep_for_defaultsz4EpNprocValidator._validate_nproc_and_ep_for_defaultsso ( %/(%C%CQHMM -AA(KK .~(. / /E7^1788,,R77"%, %+2  .=L* +(1L % % L)4 4 4.=L* +(1L %J&&$(!!++$+!!$(!3D3L44$**,,YY0ABBITTVVYY  ( |##r!Fc|j}d}t|tr|||||\}}nt|tr|||||\}}npt|t r|s|||||\}}n=t|t r|s |tkr| ||||\}}||fS)NT) r&rQr rEr rJr rOrrU)rvalidated_entityr(r)r@check_reseller_defaultsr&r*s r _validatezEpNprocValidator._validates*(  & - - #'#G#G  $$ FLL (' 2 2 #'#J#J  $$ FLL (( 3 3 dESjkk |##r!c|j}|dd}|dd}|dup|du}|dks|sd}n||||||\}}||fS)z6 Validate limits which we want to set r)Nr(rT)r&getrY) rrW input_limitsrXr&r)r(r@r*s r validate_input_limitsz&EpNprocValidator.validate_input_limitss (   $//   dD ) )!,>$ A::-:FF#'>>2BB2BD[$]$] FL|##r!)N)F)__name__ __module__ __qualname__rpropertyr&r+rErJrOrUrYr[r_ __classcell__)rs@r rrs$$$$$$  X 1$1$1$f/$/$/$b#$#$#$J%$%$%$N%$%$%$%$N$$$$$$$$$$$$r!rN)typingrrrrcllimitslib_v2rrcllimitslib_v2.lve_storager r r r r rrbaserrrrrrr!r rjs0///////////66666666 _^^^^^^^^^^^^^X$X$X$X$X$}X$X$X$X$X$r!