/opt/cloudlinux/venv/lib/python3.11/site-packages/cllimits/lib/__pycache__
NameSizeModeActions
arg_parsers.cpython-311.opt-1.pyc204260644editdlrm
arg_parsers.cpython-311.pyc204260644editdlrm
limits.cpython-311.opt-1.pyc658560644editdlrm
limits.cpython-311.pyc658560644editdlrm
utils.cpython-311.opt-1.pyc120000644editdlrm
utils.cpython-311.pyc120000644editdlrm
__init__.cpython-311.opt-1.pyc27300644editdlrm
__init__.cpython-311.pyc27300644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/cllimits/lib/__pycache__/limits.cpython-311.pyc (65856B)
§ †Ž¢Øï1eVã óÖ—ddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z mZmZmZmZmZmZmZmZmZddlmZddlmZmZmZdd lmZmZdd l m!Z!dd l"m#Z#m$Z$m%Z%m&Z&dd l'm(Z(m)Z)m*Z*dd l+m,Z,m-Z-m.Z.ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9ddl:m;Z;md„d„d„d„d„d„d„d„d„d„dœ Z?gd¢Z@dd gZAGd!„d"¦«ZBGd#„d$eB¦«ZCdS)%éN)Ú defaultdict)ÚClPwd)Úmemory_to_page)ÚFormattedException) ÚFeatureÚ NotSupportedÚcpinfoÚ domain_ownerÚget_main_username_by_uidÚ getCPNameÚis_adminÚis_panel_feature_supportedÚ is_resellerÚreseller_users)Ú EncodingError)Ú MySQLGovernorÚMySQLGovExceptionÚGovernorStatus)Úprint_dictionaryÚreplace_params)ÚCloudlinuxLicenseLib)ÚCageFsÚCageFsExceptionÚLveCtlÚLvectlException)ÚClQuotaExceptionÚ ClQuotaLibÚQuotaDisabledException)Úconvert_to_kernel_formatÚis_active_reseller_limitsÚlveé) ÚADMIN_ONLY_OPTIONSÚAVAILABLE_KEYSÚAVAILABLE_LIMITSÚAVAILABLE_LVE_KEYSÚAVAILABLE_LVP_KEYSÚAVAILABLE_MYSQL_KEYSÚAVAILABLE_MYSQL_KEYS_ALLÚAVAILABLE_QUOTA_KEYSÚCloudlinuxLimitsNoLveOptsParserÚCloudlinuxLimitsOptsParser)Úconvert_mem_value_to_bytesÚwrite_lower_boundÚLowerBoundsConfigExceptioncó—eZdZdS)ÚDomainExceptionN)Ú__name__Ú __module__Ú __qualname__©óúpy/cllimits/lib/limits.pyr1r1(s€€€€€Ø€Dr6r1c ó—|d dttt| ¦«r|›d�n|¦«¦«dz¦«i¦«S)NÚcpuÚallú%éd)ÚupdateÚstrÚintrÚisdigit©ÚlimitsÚvalues r7úrD-sr€Ø ˆ5„M×ÒØ �s•3Õ/¸u¿}º}¹¼ð1;°5° ° ° ° Ø5:ñ<ô<ñ=ô=Ø@CñDñEôEðñôðr6có<—|d d|i¦«S)NÚior:©r=rAs r7rDrD2s€  t¤ × 3Ò 3°U¸E°NÑ CÔ C€r6có<—|d d|i¦«S)Nr9ÚmysqlrGrAs r7rDrD3s€ v¨e¤}×';Ò';¸WÀeÐÔ>ðr6cóJ—| dt|¦«i¦«S)NÚvmemrYrAs r7rDrD=rZr6có0—| d|i¦«S)NÚiopsrGrAs r7rDrD?s€ &§-¢-°¸°Ñ"@Ô"@€r6) ÚspeedrFú mysql-cpuúmysql-iorLÚ maxEntryProcsrVrXr\r^)ÚrootÚadminú-ÚabusersÚsinglecó>‡—eZdZdZdZdZdZdZdZdZ ˆfd„Z d„Z d.d„Z e d/d „¦«Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zdefd„Zd„Zdedededdfd„Zd„Zd„Z d„Z!d „Z"e d!„¦«Z#d"„Z$d#„Z%d$„Z&d%„Z'd&„Z(d'„Z)d(„Z*d)„Z+d*„Z,d+„Z-d0d-„Z.ˆxZ/S)1ÚCloudlinuxLimitsz2 Class for run cloudlinux-limits commands NFcóÜ•—ttj¦«s2ttt ¦« t ¦«St¦« |¦«S©N)rrÚLVEÚsuperriÚCloudlinuxLimitsNoLveÚ__new__)ÚclsÚ __class__s €r7rozCloudlinuxLimits.__new__VsMø€Ý)­'¬+Ñ6Ô6ð aÝÕ)Õ+@ÑAÔA×IÒIÕJ_Ñ`Ô`Ð `݉wŒw�Š˜sÑ#Ô#Ð#r6cóø—t¦«|_t¦«|_t ¦«|_t ¦«|_t¦«|_ t¦«|_ i|_ dS)z# Empty constructor N) rÚ_clpwdrÚ_lvectlrÚ_cagefsrÚ _cl_quotarÚ_mysql_governorr,Ú _opts_parserÚ _users_list©Úselfs r7Ú__init__zCloudlinuxLimits.__init__[sZ€õ ‘g”gˆŒ Ý‘x”xˆŒ Ý‘x”xˆŒ Ý#™œˆŒÝ,™œˆÔÝ6Ñ8Ô8ˆÔðˆÔÐÐr6Úsuccesscó°—t|t¦«r)| |tj¦«dœ¦«t ||jp|¦«dS)z› Output data wrapper :param: `dict` data - data for output to stdout :param: `bool` force_json - always output json format )ÚresultÚ timestampN)Ú isinstanceÚdictr=ÚtimerÚ_is_json)r{ÚdataÚ force_jsonrs r7Ú print_datazCloudlinuxLimits.print_datajsT€õ �d�DÑ !Ô !ð FØ �KŠK 6½¼ ¹ ¼ ÐDÐDÑ EÔ EÐ E嘘tœ}Ð:° Ñ;Ô;Ð;Ð;Ð;r6ÚcóH— tj d¦«}|r|ntj¦«}d|›d|›d|›�}|r|d|›�z }t jtj|¦«dS#t $r)}td|›�tj ¬¦«Yd}~dSd}~wwxYw)NÚSUDO_UIDzcloudlinux-limits: op=z admin_uid=z target=ú z+cloudlinux-limits audit-log syslog failed: )Úfile) ÚosÚenvironÚgetÚgetuidÚsyslogÚ LOG_WARNINGÚOSErrorÚprintÚsysÚstderr)Ú operationÚtargetÚdetailsÚsudo_uidÚ admin_uidÚmsgÚes r7Ú _audit_logzCloudlinuxLimits._audit_logusÓ€ð VÝ”z—~’~ jÑ1Ô1ˆHØ$,Ð=˜˜µ"´)±+´+ˆIØ\¨9Ð\Ð\ÀÐ\Ð\ÐTZÐ\Ð\ˆCØð %Ø�}˜7�}�}Ñ$�Ý ŒM�&Ô,¨cÑ 2Ô 2Ð 2Ð 2Ð 2øÝð Vð Vð VÝ ÐCÀÐCÐCÍ#Ì*Ð UÑ UÔ UÐ UÐ UÐ UÐ UÐ UÐ UÐ Uøøøøð Vøøøs‚A*A.Á. B!Á8BÂB!có²—t¦«}| ¦«sd|_| ddi¦«Sd|v|_| |¦«|_|j d¦«s|j d¦«r:tj¦«s'| ddt¦«›d�i¦«|j d¦«�*tj ¦«s| dd i¦«|  ¦«|  ¦«|jd r|  ¦«S|jd r| ¦«S|jd r| ¦«S|jdr| ¦«S| ddi¦«S)z$ Run command action TrzCloudlinux license isn't validz--jsonú--for-resellerú--reseller-namez8--for-reseller/--reseller-name options not supported on ú.NzEReseller limits are not supported. Can not use --for-reseller option.Úsetr�zdisable-reseller-limitszenable-reseller-limitszUnknown action, exit)rÚget_license_statusr„Ú_error_and_exitÚ _parse_argsÚ_optsr�r!Úis_panel_supportedr Úreseller_limit_supportedÚ_verify_resellerÚ_check_user_ownerÚ_set_runÚ_get_runÚ_disable_reseller_limitsÚ_enable_reseller_limits)r{ÚargvÚlicences r7ÚrunzCloudlinuxLimits.run�sá€õ'Ñ(Ô(ˆØ×)Ò)Ñ+Ô+ð VØ ˆDŒMØ×'Ò'¨Ð3SÐ(TÑUÔUÐ UØ  DÐ(ˆŒ ð×%Ò% dÑ+Ô+ˆŒ à Œ:�>Š>Ð*Ñ +Ô +ð ¨t¬z¯~ª~Ð>OÑ/PÔ/Pð ÝÔ)Ñ+Ô+ð Ø×$Ò$ØÐgÕYbÑYdÔYdÐgÐgÐgð&ñôðð Œ:�>Š>Ð*Ñ +Ô +Ð 7ÅÔ@\Ñ@^Ô@^Ð 7Ø × Ò ØÐað"ñ ô ð ð ×ÒÑÔÐØ ×ÒÑ Ô Ð à Œ:�eÔ ð #Ø—=’=‘?”?Ð "Ø Œ:�eÔ ð #Ø—=’=‘?”?Ð "Ø Œ:Ð/Ô 0ð 3Ø×0Ò0Ñ2Ô2Ð 2Ø Œ:Ð.Ô /ð 2Ø×/Ò/Ñ1Ô1Ð 1Ø×#Ò# XÐ/EÐ$FÑGÔGÐGr6cóÔ—|j ||j¦«\}}|s"| t |¦«¦«t |dt ¦«rd|d<|S)z% Parse CLI arguments ú--lve-idr)rxÚ parse_argsr„r¥rr�r>)r{r°Ústatusr…s r7r¦zCloudlinuxLimits._parse_args¥sn€ðÔ(×3Ò3°D¸$¼-ÑHÔH‰ ˆ�Øð 7à × Ò ¥°Ñ!5Ô!5Ñ 6Ô 6Ð 6õ �d˜:Ô&­Ñ ,Ô ,ð !Ø ˆD�Ñ Øˆ r6có—|j d¦«}|sdS|j d¦«dkrdS| ¦«\}}|dvru|j d¦«r[ | |jd¦«}n9#t$r,}| |j|jdœ¦«Yd}~nd}~wwxYw|dvrdS|| |¦«kr| d||d œdœ¦«dSdS) z… Checks that specified reseller is an owner of specified user and terminate program if need :return: r Nr´r)NúN/Aú--domain©rÚcontextz2%(username)s is not owned by reseller %(reseller)s)ÚusernameÚreseller) r§r�Ú _check_userÚget_user_name_by_domainr1r¥Úmessager»Ú_get_reseller_name)r{Ú for_resellerÚ_r¼r�s r7r«z"CloudlinuxLimits._check_user_owner³s^€ð ”z—~’~Ð&6Ñ7Ô7ˆ Øð à ˆFà Œ:�>Š>˜*Ñ %Ô %¨Ò *Ð *à ˆFð×&Ò&Ñ(Ô(‰ ˆˆ8Ø �}Ð $Ð $¨¬¯ª¸ Ñ)CÔ)CÐ $ð RØ×7Ò7¸¼ À:Ô8NÑOÔO��øÝ"ð Rð Rð RØ×$Ò$°´ ÀaÄiÐ%PÐ%PÑQÔQÐQÐQÐQÐQÐQÐQøøøøð Røøøà �}Ð $Ð $ð ˆFà ˜4×2Ò2°8Ñ<Ô<Ò <Ð <à × Ò ØNà (Ø ,ððð"ð"ñ ô ð ð ð ð =Ð r‡rr¥rÀr»rÊs r7r¯z(CloudlinuxLimits._enable_reseller_limitsòsº€à ŒJÐ(Ô )ð ØŒz˜/Ô*ð àð ð  NØ ŒL× <Ò <½SÀ¹[¼[Ñ IÔ IÐ IØ �OŠO˜B Ñ %Ô %Ð %Ð %Ð %øÝð Nð Nð NØ × Ò ¨A¬IÀ!Ä)Ð!LÐ!LÑ MÔ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Møøøøð Nøøøsž=AÁ BÁ'"BÂBcóÜ—|jd}|s| ddi¦«t|¦«}|€| d|ddœdœ¦« td |¦«r4| d d d |›�¦«| d |id¦«dSn9#t $r,}| |j|jdœ¦«Yd}~nd}~wwxYw| dddidœ¦«dS)z6 Run `set --pmem-lower-bound` command ú--pmem-lower-boundrz;PMEM lower bound value is required (use --pmem-lower-bound)Nz>Invalid memory format %(format)s. Use format like %(examples)sz512M, 1024M, 2G)ÚformatÚexamplesrºÚPMEMzset-pmem-lower-boundÚglobalzvalue=ÚlimitTrz5Failed to write PMEM lower bound config file %(file)srŒz /etc/cloudlinux/pmem_lower_bound) r§r¥rr.ržr‡r/rÀr»)r{Ú bound_valueÚ pmem_pagesr�s r7Ú_set_pmem_lower_boundz&CloudlinuxLimits._set_pmem_lower_boundþsm€ð”jÐ!5Ô6ˆ Øð lØ × Ò  (Ð,iÐ!jÑ kÔ kÐ kõ$ KÑ0Ô0ˆ Ø Ð Ø × Ò ØZà)Ø 1ððð"ð"ñ ô ð ð NÝ  ¨Ñ5Ô5ð Ø—’Ð 6¸Ø 6¨Ð 6Ð 6ñ8ô8ð8à—’ ¨+Ð 6¸Ñ=Ô=Ð=Ø�qð  øõ *ð Nð Nð NØ × Ò ¨A¬IÀ!Ä)Ð!LÐ!LÑ MÔ MÐ MÐ MÐ MÐ MÐ MÐ Møøøøð Nøøøð ×ÒØMØÐ BÐCð ð ñ ô ð ð ð sÁAB CÂ#"C à Ccó —| ¦«\}}|�|�||fS|j}|drú | |d¦«}n9#t$r,}| |j|jdœ¦«Yd}~nd}~wwxYw |j |¦«}n>#tj $r,}| |j|jdœ¦«Yd}~nd}~wwxYw|  |¦«s)t|¦«r| dd|idœ¦«||j |<�nX|d}|rƒt|¦«}|D]f} |j |¦«}n>#tj $r,}| |j|jdœ¦«Yd}~nd}~wwxYw||j |<Œgd|j d<nÉ tj¦«|_n9#t$$r,}| |j|jdœ¦«Yd}~nd}~wwxYwd }|jD]l} |j |¦«d}n>#tj $r,}| |j|jdœ¦«Yd}~nd}~wwxYw||j |<Œmd}||fS) z| Determines users according to --lve-id/--username/--domain arguments Or build all panel users list Nr¹rºú %(username)s is not a panel userr¼r¡rcrrˆ)r¾r§r¿r1r¥rÀr»rsÚget_uidrÚNoSuchUserExceptionÚget_package_name_by_user_idÚboolryrrÚget_panel_users_uid_listÚ_panel_uids_listrÚ get_names)r{Úuidr¼Úor�Ú reseller_nameÚresellers_usersÚnames r7rÅz CloudlinuxLimits._get_check_usersh€ð ×(Ò(Ñ*Ô*‰ ˆˆXØ ˆ?˜xÐ3ؘ�=Ð à ŒJˆØ ˆZŒ=ð, ð Rà×7Ò7¸¸*¼ ÑFÔF��øÝ"ð Rð Rð RØ×$Ò$°´ ÀaÄiÐ%PÐ%PÑQÔQÐQÐQÐQÐQÐQÐQøøøøð Røøøð RØ”k×)Ò)¨(Ñ3Ô3��øÝÔ,ð Rð Rð RØ×$Ò$°´ ÀaÄiÐ%PÐ%PÑQÔQÐQÐQÐQÐQÐQÐQøøøøð Røøøð×3Ò3°CÑ8Ô8ð J½TÀ#¹Y¼Yð JØ×$Ò$Ð0RØ2<¸hÐ1Gð&Ið&IñJôJðJà$,ˆDÔ ˜SÑ !Ñ !ðÐ/Ô0ˆMØð 1Ý"0°Ñ"?Ô"?�Ø+ð1ð1�DðZØ"œk×1Ò1°$Ñ7Ô7˜˜øÝ Ô4ðZðZðZØ×,Ò,¸¼ ÈaÌiÐ-XÐ-XÑYÔYÐYÐYÐYÐYÐYÐYøøøøðZøøøà,0�DÔ$ SÑ)Ð)Ø&,�Ô  Ñ#Ð#ðVÝ,2Ô,KÑ,MÔ,M�DÔ)Ð)øÝ$ðVðVðVØ×(Ò(°A´IÈ!Ì)Ð)TÐ)TÑUÔUÐUÐUÐUÐUÐUÐUøøøøðVøøøà�ØÔ0ð1ð1�CðZØ#œ{×4Ò4°SÑ9Ô9¸!Ô<˜˜øÝ Ô4ðZðZðZØ×,Ò,¸¼ ÈaÌiÐ-XÐ-XÑYÔYÐYÐYÐYÐYÐYÐYøøøøðZøøøà,0�DÔ$ SÑ)Ð)؈CØ�Hˆ}Ðsw°A Á BÁ"A=Á=BÂB!Â!CÂ0"CÃCÅE"Å"FÅ1"FÆFÆ7GÇ HÇ"HÈHÈ H6È6I1É"I,É,I1có6—|j |¦«Srk)rtrÜ)r{rás r7rÜz,CloudlinuxLimits.get_package_name_by_user_idYs€ØŒ|×7Ò7¸Ñ<Ô<К>Ð*:Ñ;Ô;ˆLØ/;Ð/G˜|˜|ÈSˆD�Ñ Ð ð $×9Ò9¸$¸zÔ:JÑKÔKÐ Øð 2Ø!1��X‘à#×6Ò6°xÑ@Ô@ˆD�Ñ Ø × &Ò & tÑ ,Ô ,Ð ,؈ r6cóP— | |¦«S#t$rYdSwxYw)zP Retrives user's main domain :param username: User name N)Úget_user_domainr1©r{r¼s r7rêz&CloudlinuxLimits._get_user_main_domainvs=€ð  Ø×'Ò'¨Ñ1Ô1Ð 1øÝð ð ð Ø�4�4ð øøøs ‚— %¤%rìcó—|d}|j |¦«}t|¦«dkrdS|D]J}| |¦«}| |¦«}|dkr|dkr||d<||d<||d<dSŒKdS) a Check and fix user info if some users with same uid present. See LU-1816 for details :param user: User info. Example: {'id': 10001, 'username': 'cltest2', 'reseller': 'admin', 'domain': 'cltest2.com'} :return: None rèr"Nr¸rerér½r¼)rsràÚlenrêrÁ)r{rìráÚ usernamesr¼Ú main_domainr½s r7rëz&CloudlinuxLimits._fix_single_uid_users€s¯€ð�4ŒjˆØ”K×)Ò)¨#Ñ.Ô.ˆ å ˆy‰>Œ>˜QÒ Ð Ø ˆFØ!ð ð ˆHØ×4Ò4°XÑ>Ô>ˆKØ×.Ò.¨xÑ8Ô8ˆHؘeÒ#Ð#¨°Cª¨Ø!,��X‘Ø#+��ZÑ Ø#+��ZÑ Ø��øð ð r6cóø ‡—i}|j}|j ¦«rd|d<nd|d<|d€$|j ¦«rd|d<nd|d<|j ¦«rd|d<nd|d<t|dt¦«r|d  d ¦«ndŠtˆfd „tD¦«¦«}g}|d €s|d €k|d €c |j   |d|d¬¦«n9#t$r,}| |j|jdœ¦«Yd}~nd}~wwxYw | ¦«}nK#t&$r>}|ddkr&d|d<d|vri|d<t|¦«|dd<d}Yd}~nd}~wwxYw|j ¦«D�]Š\}}| ||¦«} |dr�|j ¦«rh |j | d¦«} | rdnd| d<n=#t0$r0}d|d<d|vri|d<t|¦«|dd<Yd}~nd}~wwxYw| |¦«| d<|d €|d €|d � d|j _|j  ||d¦«} |d€|dr| || |¦«t;|d|d|d|dg¦«�r|�r |dr#|j | d¦«| d<|dr#|j | d¦«| d<|ds|dr]|j  | dd¬¦«\} } |drd | vri| d <| | d d!<|drd"| vri| d"<| | d"d!<n=#t&$r0}d|d<d|vri|d<t|¦«|dd<Yd}~nd}~wwxYw| !|| ¦«| | d#<| "| ¦«�ŒŒtG|¦«|d$<||d%<|dsk|j j$�Zg}|j j$ %¦«D]3}| !||d#¦«| "|¦«Œ4||d&<ng|d&<| &|d¦«d'S)(ú3 Process output for selected users ÚenabledÚcageFSÚdisabledr NÚquotaÚmySqlGovú--limitsrMc3ó*•K—|] }|‰ p|‰vfV—ŒdSrkr5©Ú.0ÚkÚlks €r7ú z4CloudlinuxLimits._get_action_list..²ó3øèè€ÐEÐE¨q�Q˜B˜Ð) ! r 'Ð*ÐEÐEÐEÐEÐEÐEr6r´ú --usernamer¹z--human-readable-numbersr¡)r½rºÚerrorÚerrorsFÚcagefsr¼ÚpackagerLz mysql-govzmysql-restrictr`raÚmySqlRestrictedT©Úwith_package_markr9rIrFrBÚitemsÚusersÚ resellersr)'r§ruÚis_cagefs_presentrvÚis_clquota_presentrwÚis_governor_presentr�r>rQr‚r%rtÚ _load_inforr¥rÀr»Úcan_get_governor_limitsrryr rîÚget_user_statusrrÜÚ _package_dataÚget_limits_by_user_idÚ_get_inodes_limitsÚanyÚget_governor_status_by_usernameÚget_restrict_status_by_usernameÚget_limits_by_userÚ_filter_limitsÚappendróÚ_resellers_dataÚvaluesr‡)r{rrâÚkeysrr�Úis_governor_availablerár¼rìÚ cagefs_statusrBÚ cpu_limitÚio_limitÚresellers_datar½rs @r7rÆz!CloudlinuxLimits._get_action_list•sJø€ð ˆà ŒJˆð Œ<× )Ò )Ñ +Ô +ð *Ø(ˆF�8Ñ Ð à)ˆF�8Ñ à Ð Ô Ð &àŒ~×0Ò0Ñ2Ô2ð -Ø"+��w‘�à",��w‘ð Ô × 3Ò 3Ñ 5Ô 5ð ,Ø!*ˆF�:Ñ Ð à!+ˆF�:Ñ å)3°A°j´MÅ3Ñ)GÔ)GÐ QˆQˆzŒ]× Ò  Ñ %Ô %Ð %ÈTˆÝÐEÐEÐEÐEÕ4DÐEÑEÔEÑEÔEˆðˆà ˆZŒ=Ð  Q |¤_Ð%<ÀÀ:ÄÐAVð Rð” ×'Ò'¨Ð*DÔ(EÐPQÐRcÔPdÐ'ÑeÔeÐeÐeøÝ"ð Rð Rð RØ×$Ò$°´ ÀaÄiÐ%PÐ%PÑQÔQÐQÐQÐQÐQÐQÐQøøøøð Røøøð *Ø$(×$@Ò$@Ñ$BÔ$BÐ !Ð !øÝ ð *ð *ð *Ø�jÔ! YÒ.Ð.Ø%,��zÑ"Ø 6Ð)Ð)Ø')�F˜8Ñ$Ý36°q±6´6�F˜8Ô$ ZÑ0Ø$)Ð !Ð !Ð !Ð !Ð !Ð !øøøøð  *øøøð"Ô-×3Ò3Ñ5Ô5ð9 ñ9 ‰MˆC�Ø×5Ò5°c¸8ÑDÔDˆDà�HŒ~ð 8 $¤,×"@Ò"@Ñ"BÔ"Bð 8ð8Ø$(¤L×$@Ò$@ÀÀjÔAQÑ$RÔ$R�MØ2?Ð%O Y YÀZ�D˜‘N�NøÝ&ð8ð8ð8à'.�F˜8Ñ$Ø vÐ-Ð-Ø+-˜˜xÑ(Ý14°Q±´�F˜8Ô$ XÑ.Ð.Ð.Ð.Ð.Ð.øøøøð 8øøøð#×>Ò>¸sÑCÔCˆD�‰Oà�Œ}Ð(¨A¨l¬OÐ,GÈ1ÈZÌ=ÐKdØ-1�” Ô*à”\×7Ò7¸¸QÐ?YÔ=ZÑ[Ô[ˆFØÐ!Ô"Ð*¨t°H¬~Ð*Ø×'Ò'¨¨V°VÑ<Ô<Ð<õ�D˜Ô% tÐ,<Ô'=¸tÀKÔ?PÐRVÐWaÔRbÐcÑdÔdñ :Ø-ñ :ð:à˜KÔ(ðrØ+/Ô+?×+_Ò+_Ð`dÐeoÔ`pÑ+qÔ+q˜˜ZÑ(àÐ,Ô-ðyØ26Ô2F×2fÒ2fÐgkÐlvÔgwÑ2xÔ2x˜Ð.Ñ/ð˜KÔ(ð =¨D°Ô,<ð =Ø.2Ô.B×.UÒ.UÐVZÐ[eÔVfØhlð/Vñ/nô/nÑ+˜  8à  Ô,ð?Ø$¨FÐ2Ð2Ø02  u¡ Ø5>˜F 5œM¨'Ñ2Ø  Ô+ð=Ø#¨6Ð1Ð1Ø/1  t¡ Ø4<˜F 4œL¨Ñ1øøÝ(ð:ð:ð:à)0�F˜:Ñ&Ø vÐ-Ð-Ø+-˜˜xÑ(Ý36°q±6´6�F˜8Ô$ ZÑ0Ð0Ð0Ð0Ð0Ð0øøøøð :øøøð × Ò   fÑ -Ô -Ð -Ø#ˆD�‰NØ �LŠL˜Ñ Ô Ð Ñ õ˜e™*œ*ˆˆw‰Øˆˆw‰ØÐ!Ô"ð )àŒ|Ô+Ð7Ø!#�Ø $¤ Ô <× CÒ CÑ EÔ Eð4ð4�HØ×'Ò'¨¨h°xÔ.@ÑAÔAÐAØ"×)Ò)¨(Ñ3Ô3Ð3Ð3Ø&4��{Ñ#Ð#à&(��{Ñ#ð �Š˜ Ñ%Ô%Ð%؈qsaÃ2(DÄ EÄ%"E Å EÅE*Å* F2Å44F-Æ-F2È )H6È6 I0É&I+É+I0Ì'CO+Ï+ P%Ï5&P Ð P%rárBrÚreturncó—|j ¦«s d|d<d| di¦«d<dS|j ¦«s d|d<d| di¦«d<dS |j |¦«\}}||dœ|d<dS#t $r6}d|d<t |¦«| di¦«d<Yd}~dSd}~wt$r}||j|j d œz}Yd}~dSd}~wwxYw) z¢ Retrieve inodes limits for user :param int uid: user id :param dict limits: limits dict :param dict result: result dict rrûz'LVE Manager/quota package not installedrNz#Quotas not activated on this systemrNrL)Úwarningr») rvrÚ setdefaultÚis_clquota_activatedÚget_inodes_limits_by_uidrr>rrÀr»)r{rárBrÚ soft_limitÚ hard_limitr�s r7rz#CloudlinuxLimits._get_inodes_limitssN€ðŒ~×0Ò0Ñ2Ô2ð Ø%ˆF�7‰OØ7`ˆF× Ò ˜h¨Ñ +Ô +¨GÑ 4Ø ˆFàŒ~×2Ò2Ñ4Ô4ð Ø%ˆF�7‰OØ7\ˆF× Ò ˜h¨Ñ +Ô +¨GÑ 4Ø ˆFð CØ%)¤^×%LÒ%LÈSÑ%QÔ%QÑ "ˆJ˜ Ø(2¸JÐGÐGˆF�8Ñ Ð Ð øÝ%ð >ð >ð >Ø%ˆF�7‰OÝ7:¸1±v´vˆF× Ò ˜h¨Ñ +Ô +¨GÑ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4øøøøÝð Cð Cð CØ  !¤)¸¼ ÐBÐBÑ BˆFˆFˆFˆFˆFˆFˆFøøøøð Cøøøs$Á4%B DÂ%+Cà DÃ#C;Ã;Dcóz—|j ¦«sdddidœ}t|¦«‚|j ¦«\}}|tjkrdddidœ}t|¦«‚|tjkr|‚|j ¦«tvrdSdddd œdœ}t|¦«‚) aB Checks whether Governor limits can be retrieved in the current Governor STATE. This is purely a Governor availability/state check: it verifies that mysqlgov is installed and operational and that its mode is in [abusers, single]. It does NOT perform any caller-role / authorization check and must not be relied upon as one -- cloudlinux-limits runs as root and has no caller-identity signal of its own. Caller authorization for Governor MUTATION is enforced OUTSIDE this function: the panel/lvemanager layer force-injects ``--for-reseller=`` for reseller callers (cpanel-lvemanager utils/libcloudlinux.py), and arg_parsers makes the Governor mutation keys (``--mysql-gov``/``--mysql-restrict``/``--mysql-unrestrict-all``, ADMIN_ONLY_OPTIONS) incompatible with ``--for-reseller`` -- so only admin callers reach the Governor write path. lvemanager additionally rejects those keys for non-admin owners (cl_limits). Governor READS are intentionally available to reseller-scoped callers (low-sensitivity: status plus their own users' limits). Only returns if it's True - otherwise constructs and throws MySQLGovException. Does it this way because these exceptions are caught in the web UI and displayed with optional localization. For localization of messages from here, see example: cpanel-lvemanager/spa/src/assets/i18n/hu-hu.json, key "Governor mode is not abusers or single" :raises MySQLGovException: Error from the Governor status check, or a constructed error for UI to display. :raises gov_error: If the Governor status check returned an error, reraises it here. :return: Whether it's possible to retrieve Governor limits in current state. :rtype: bool z%(util)s not present in systemÚutilÚGovernor©rÀr»z%(util)s is currently disabledTz%(util)s mode is not %(mode)szabusers or single)r0Úmode) rwrrÚget_governor_statusrÚDISABLEDÚERRORÚget_governor_modeÚMYSQL_GOV_ENABLED_MODE)r{Ú exc_messageÚ gov_statusÚ gov_errors r7rz(CloudlinuxLimits.can_get_governor_limits3sð€ð<Ô#×7Ò7Ñ9Ô9ð 1à;Ø" JÐ/ððˆKõ$ KÑ0Ô0Ð 0à $Ô 4× HÒ HÑ JÔ Jш �IØ �Ô0Ò 0Ð 0à;Ø" JÐ/ððˆKõ$ KÑ0Ô0Ð 0Ø �Ô-Ò -Ð -؈Oà Ô × 1Ò 1Ñ 3Ô 3Õ7MÐ MÐ MØ�4ð7Ø *Ð4GÐHÐHð ð ˆ õ   Ñ,Ô,Ð,r6có´—dD]5}||s+| |d¦«r| |¦«Œ6|ds+| dd¦«r| d¦«|dsj| dd¦«rT|d dd¦«r8|d d¦«|ds| d¦«|dsl| dd¦«rX|d dd¦«r>|d d¦«|ds| d¦«d Sd Sd Sd Sd S) z¼ Remove limits that are stored as key: False in `keys` dict; Used for --limits key; :type keys: dict[str, bool] :type limits: dict[str, str | dict] )rXr\rVr^FrbrTr_r9r:rFN)r�Úpop)r{r!rBrs r7rzCloudlinuxLimits._filter_limitsks�€ð3ð ð ˆAؘ”7ð ˜vŸzšz¨!¨UÑ3Ô3ð Ø— ’ ˜1‘ ” � øØ�OÔ$𠨯ª°D¸%Ñ)@Ô)@ð Ø �JŠJ�tÑ Ô Ð Ø�GŒ}ð " §¢¨E°5Ñ!9Ô!9ð "¸fÀU¼m×>OÒ>OÐPUÐW\Ñ>]Ô>]ð "Ø �5ŒM× Ò ˜eÑ $Ô $Ð $ؘ%”=ð "Ø— ’ ˜5Ñ!Ô!Ð!Ø�DŒzð !˜fŸjšj¨¨uÑ5Ô5ð !¸&À¼,×:JÒ:JÈ5ÐRWÑ:XÔ:Xð !Ø �4ŒL× Ò ˜UÑ #Ô #Ð #ؘ$”<ð !Ø— ’ ˜4Ñ Ô Ð Ð Ð ð !ð !ð !ð !ð !ð !ð !ð !r6cóà—|j d¦«r| ¦«S| ¦«\}}| ¦«| ||¦«S)z# Run `set` command rÏ)r§r�r×Ú_set_check_userrªÚ _set_action)r{rár¼s r7r¬zCloudlinuxLimits._set_run€sl€ð Œ:�>Š>Ð.Ñ /Ô /ð 0Ø×-Ò-Ñ/Ô/Ð /ð×,Ò,Ñ.Ô.‰ ˆˆXà ×ÒÑÔÐà×Ò  XÑ.Ô.Ð.r6có–‡—‰ ¦«\}}tˆfd„dD¦«¦«}|�|€|s‰ ddi¦«tˆfd„tD¦«¦«r$tˆfd„tD¦«¦«s||fS‰jds¥‰jd �Zt ‰jd ¦«s@t‰jd ¦«s%‰ d d ‰jd id œ¦«n>‰ |¦«}t|¦«r‰ d d |id œ¦«||fS)z& Find user for modify c3ó2•K—|]}‰j|V—ŒdSrk©r§©rÚxr{s €r7rz3CloudlinuxLimits._set_check_user..•s9øèè€ð ð °! ¤ ¨1¤ ð ð ð ð ð ð r6)ú--mysql-unrestrict-allr¡rÏNrz1You must set lve-id or username for modify limitsc3ó2•K—|]}‰j|V—ŒdSrkrCrDs €r7rz3CloudlinuxLimits._set_check_user..Ÿs)øèè€Ð9Ð9 ˆtŒz˜!Œ}Ð9Ð9Ð9Ð9Ð9Ð9r6c3ó8•K—|]}‰jd|›�V—ŒdS©z--NrCrDs €r7rz3CloudlinuxLimits._set_check_user.. s0øèè€ÐHÐH°�t”z ( q ( (Ô+ÐHÐHÐHÐHÐHÐHr6r¡r z.Reseller limits for %(reseller)s are disabled.r½rºzYReseller limits for %(reseller)s are enabled. Admin can`t set limits for resellers users.) r¾rr¥r#r&r§r r rÁ)r{rár¼Úopts_without_userrãs` r7r?z CloudlinuxLimits._set_check_user�s¸ø€ð×(Ò(Ñ*Ô*‰ ˆˆXåð ð ð ð ð8 ð ñ ô ñ ô Ðð ˆK˜8Ð+Ð5FÐ+Ø × Ò  (Ð,_Ð!`Ñ aÔ aÐ aõ Ð9Ð9Ð9Ð9Õ&8Ð9Ñ9Ô9Ñ 9Ô 9ð !ÝÐHÐHÐHÐHÕ5GÐHÑHÔHÑHÔHð !à˜�=Ð ØŒzÐ+Ô,ð ØŒzÐ*Ô+Ð7ÅÈÌÐTdÔIeÑ@fÔ@fÐ7Ý0°´Ðð*ð*ñôðð �Hˆ}Ðr6có—tdg¦«}t|zt|zt|zt|zdœ|}t t|¦«|z¦«dkrt t|¦«|z¦«SdS)z Return keys to reset that are only acceptable to this type of limits :param list defaults: List of keys to reset :param str t: one of "lve", "cl-quota", "dbgov" r:)r!Úlvpúcl-quotaÚdbgovrN)r£r&r'r*r(róÚlist)ÚdefaultsÚtÚall_keyr!s r7Ú_clean_defaultsz CloudlinuxLimits._clean_defaults´s…€õ�u�g‘,”,ˆå%¨Ñ/Ý%¨Ñ/Ý,¨wÑ6Ý)¨GÑ3ð  ð ð ô  ˆõ �s�8‰}Œ}˜tÑ#Ñ $Ô $ qÒ (Ð (Ý�˜H™ œ ¨Ñ,Ñ-Ô-Ð -؈tr6có’—|j}|dp|d}|sdSt|¦«s| dd|idœ¦«dSdS)z� If any reseller is specified in cli options ensures that it exists and really a reseller. Will exit with error if not. r¡r NzNo such reseller: %(reseller)sr½rº)r§rr¥)r{râr½s r7rªz!CloudlinuxLimits._verify_resellerÆs€ð ŒJˆØÐ&Ô'Ð>¨1Ð-=Ô+>ˆØð Ø ˆFݘ8Ñ$Ô$ð Ø × Ò Ø:Ø&¨Ð1ð"ð"ñ ô ð ð ð ð ð r6c óD—|j}d}d}ttj¦«}|r1|dr)|ddkr| ||¦«\}}} d}nI|ddu}d|d<|r|r| ||¦«\}}} n| |||¦«\}}} |pdg}t |¦«rtd„|D¦«d ¦«Sttj¦«r|dkr|j   ¦«|  |||| |||¦«S) zl Process set limits command :param uid: User uid :param username: User name Fr r´rTr¡Nc3óK—|]}|¯|V—Œ dSrkr5)rÚcodes r7rz/CloudlinuxLimits._set_action..òs'èè€Ð;Ð; $°dÐ;˜Ð;Ð;Ð;Ð;Ð;Ð;r6é*) r§rrÚRESELLER_LIMITSÚ_set_reseller_actionÚ_set_user_actionrÚnextrlrtÚapply_all_limitsÚ_make_set_action_response) r{rár¼râÚaction_with_reseller_containerÚset_default_resellers_limitsÚreseller_limits_supportedÚis_lvectl_errorÚret_listrs r7r@zCloudlinuxLimits._set_actionÕst€ð ŒJˆØ).Ð&Ø',Ð$Ý$>½wÔ?VÑ$WÔ$WÐ!Ø $ð \¨Ð+;Ô)<ð \ÀÀ:ÄÐRSÒASÐASð15×0IÒ0IÈ!ÈSÑ0QÔ0QÑ -ˆO˜X vØ+/Ð (Ð (à-.Ð/@Ô-AÈÐ-MÐ *Ø ˆAˆj‰MØ(ð \Ð-Kð \à48×4MÒ4MÈaÐQTÑ4UÔ4UÑ1� ¨6¨6à48×4IÒ4IÈ!ÈSÐRZÑ4[Ô4[Ñ1� ¨6ð�? ˜sˆÝ ˆx‰=Œ=ð AåÐ;Ð;¨(Ð;Ñ;Ô;¸RÑ@Ô@Ð @å %¥g¤kÑ 2Ô 2ð ,°s¸a²x°xð ŒL× )Ò )Ñ +Ô +Ð +à×-Ò-Ð.LØ.=¸qÀ&Ø.JØ.1°8ñ=ô=ð =r6có臇—|jstd¦«dS| tj¦«ddœ¦«|ds|drI|sGd|j_t tj¦«r d|j _ |  ¦«�nÕd}d} tt¦«} |d€|d�%|j |d ¬ ¦«\|d<|d<| ¦«D]Q\} } | d d…} | r@| t"vr7d } | r | t$vrd }t'| ¦«} t(| } | | | ¦«ŒR| �r |rªd|j _ |r!|j  |d ¦«ŠnW|r;|j  |d ¦«}|d}|€|d}|dŠn|j  |¦«Šd„Šˆˆfd„|  ¦«D¦«} | |¦«}|r||| dœg}| d|i¦«n'||dkrdn||| dœg}| d|i¦«| |d ¦«dS)Nr}r)r€rú --defaultú --unlimitedFú --mysql-cpuú --mysql-ioTr ér r¡rårèrBcó`—t|t¦«r| |¦«n|}|Srk)r�r‚r=)Ú old_valueÚ new_values r7Ú update_funcz?CloudlinuxLimits._make_set_action_response..update_func6s6€Ý% iµÑ6Ô6ð2Ø%×,Ò,¨YÑ7Ô7Ð7Ð7à(1˜IØ(Ð(r6cóH•—i|]\}}||‰vr‰|‰|¦«n|“ŒSr5r5)rÚkeyrCÚ getted_limitsrms €€r7ú z>CloudlinuxLimits._make_set_action_response..=sVø€ð%ð%ð%ñ'˜C ðØ -Ð/Ð/ð)˜[¨° ¸cÔ0BÑCÔCÐCØ5:ð%ð%ð%r6)rèrårBrrcre)rèr¼r½rBr)r„r”r=rƒrvÚ_inode_user_limitsrrrlrtrrÆrr‚rwrr r$r&r>Ú OUT_LIMITSÚ#get_default_limits_by_reseller_nameÚget_limits_by_reseller_namerrÁr‡)r{r_rbrârr`rár¼Ú is_lve_limitsÚ is_limitsÚ setted_limitsrorCÚ value_funcÚgetted_reseller_datarãrrrprms @@r7r^z*CloudlinuxLimits._make_set_action_responseþs0øø€ðŒ}ð Ý �)Ñ Ô Ð Ø�1à� Š Ýœ™œØð ð ñ ô ð ð ˆkŒNðK *˜a  Ô.ðK *¸ðK *Ø04ˆDŒNÔ -Ý)­'¬+Ñ6Ô6ð 2Ø-1�” Ô*Ø × !Ò !Ñ #Ô #Ð #Ñ #à!ˆM؈IÝ'­Ñ-Ô-ˆMØ�ÔÐ+¨q°¬Ð/Jð59Ô4H×4[Ò4[Ð\dØnrð5\ñ5tô5tÑ1��-Ñ  ! L¡/àŸgšg™iœið 5ð 5‘ ��Uؘ!˜"˜"”g�Øð5˜S¥NÐ2Ð2Ø $�IØð- Õ(:Ð!:Ð!:Ø(,˜ Ý ™JœJ�EÝ!+¨C¤�JØ�J˜}¨eÑ4Ô4Ð4øðñ1 4Ø ðØ15�D”LÔ.Ø3ðTð)-¬ ×(XÒ(XÐYZÐ[kÔYlÑ(mÔ(m˜ ˜ à9ð Tð48´<×3[Ò3[Ð\]Ð^oÔ\pÑ3qÔ3qÐ0Ø';¸FÔ'C˜HØ"˜{Ø&:¸4Ô&@ Ø,@ÀÔ,J˜M˜Mà,0¬L×,NÒ,NÈsÑ,SÔ,S˜Mð)ð)ð)ð%ð%ð%ð%ð%ð+8×*=Ò*=Ñ*?Ô*?ð%ñ%ô%�Mð !%× 7Ò 7¸Ñ AÔ A� Ø1ð4à!Ø (Ø"/ð"ð"ð!�Ið —M’M ;° Ð":Ñ;Ô;Ð;Ð;ð#&Ø/7¸6Ò/AÐ/A¨¨ÀxØ(5Ø&3ð ðð�Eð—M’M 7¨EÐ"2Ñ3Ô3Ð3Ø �OŠO˜F DÑ )Ô )Ð )؈qr6c󾇇—d}g}i}‰d}ttj¦«rìtˆfd„tD¦«¦«rÌddiŠt ˆˆfd„tD¦«¦«}‰ d¦«|d< |j |||¦«} |  | ¦«|  d d |›d |›�d |›d |›�¦«n9#t$r,} |  | j | jdœ¦«Yd} ~ nd} ~ wwxYw‰d�rttj¦«r |j ||¦«|  dd |›d |›�d|›�¦«d} n)#tf$r} d}| j | jdœ} Yd} ~ nd} ~ wwxYw|rd|d<i|d<| |dd< |€|j |¦«d} d} n)#t$f$r} d} | j | jdœ} Yd} ~ nd} ~ wwxYw| rd|d<d|vri|d<| |dd<d} |  | ¦«‰d��ttj¦«r‹ | ‰dd¦«}|�>|j ||¦«|  dd |›d |›�d|›d |›�¦«d}d} n)#tf$r} d}| j | jdœ} Yd} ~ nd} ~ wwxYw|rd|d<i|d<| |dd<‰d�€& | ‰dd¦«�|j |¦«d} d} n)#t$f$r} d} | j | jdœ} Yd} ~ nd} ~ wwxYw| rd|d<d|vri|d<| |dd<ttj¦«r� | ‰dd¦«}|j ¦«r|�|j ||¦«n9#t4f$r+} d|vri|d<| j | jdœ|dd<Yd} ~ nd} ~ wwxYwd} |  | ¦«‰drœ ‰dd k}|j ||¦«|  d!d"|›�d#‰d›�¦«d} |  | ¦«n9#t:$r,} |  | j | jdœ¦«Yd} ~ nd} ~ wwxYwttj¦«�r'tˆfd$„t<D¦«¦«�r | ¦«�r¶‰d%rš‰d%d&k} |j  ||¦«} |  | ¦«|  d'd"|›�d#‰d%›�¦«n9#t4$r,} |  | j | jdœ¦«Yd} ~ nd} ~ wwxYw‰d(rš‰d(d)k} |j !||¦«} |  | ¦«|  d*d"|›�d#‰d(›�¦«n9#t4$r,} |  | j | jdœ¦«Yd} ~ nd} ~ wwxYw‰d+r |j "¦«} |  | ¦«|  d,d-¦«n9#t4$r,} |  | j | jdœ¦«Yd} ~ nd} ~ wwxYwtˆfd.„tFD¦«¦«rˉd/‰d0}}|d1kr!|j $d2¦«sd3}d3‰d0< |j %|d4krd5n|||¦«} |  | ¦«|  d6d"|›�d7|›d8|›�¦«n9#t4$r,} |  | j | jdœ¦«Yd} ~ nd} ~ wwxYwn9#t4$r,} |  | j | jdœ¦«Yd} ~ nd} ~ wwxYw‰d9r¯ |j &|‰d9‰ dd¦«¬:¦«|  d;d |›d |›�d<‰d9›�¦«d} |  | ¦«n9#t$$r,} |  | j | jdœ¦«Yd} ~ nd} ~ wwxYw|||fS)=NFr c3ó.•K—|]}‰d|›�V—ŒdSrIr5©rÚsrâs €r7rz4CloudlinuxLimits._set_user_action.._s-øèè€Ð:cÐ:cÈ1¸1¸XÀ!¸X¸X¼;Ð:cÐ:cÐ:cÐ:cÐ:cÐ:cr6rbÚmepc3óp•K—|]0}‰d|›�® ‰ ||¦«‰d|›�fV—Œ1dSrI)r�)rrEÚ limits_maprâs €€r7rz4CloudlinuxLimits._set_user_action..cs_øèè€ðLðLÀ!Ø34°X¸!°X°X´;Ð3Jð&Ÿ>š>¨!¨QÑ/Ô/°°8¸°8°8´Ð=Ø3JÐ3JÐ3JÐ3JðLðLr6z--save-all-parameterszsave-all-parameterszset-lve-limitszuid=z user=úlimits=z reseller=rºrfz set-unlimitedú reseller=TrÚlvectlrrûrrer!zreset-to-defaultúkeys=rMrNrüz--cagefsrøz set-cagefszuser=zstatus=c3ó.•K—|]}‰d|›�V—ŒdSrIr5r}s €r7rz4CloudlinuxLimits._set_user_action..Òs.øèè€Ð?nÐ?nÐPQÀÀ(ÀqÀ(À(Ä Ð?nÐ?nÐ?nÐ?nÐ?nÐ?nr6z --mysql-govÚwatchedz set-mysql-govz--mysql-restrictÚ restrictedzset-mysql-restrictrFzmysql-unrestrict-allz all-usersc3ó.•K—|]}‰d|›�V—ŒdSrIr5r}s €r7rz4CloudlinuxLimits._set_user_action..òs-øèè€ÐEÐE¨1˜1˜X !˜X˜Xœ;ÐEÐEÐEÐEÐEÐEr6rgrhr"z1.2-17rircÚdefaultzset-mysql-limitszcpu=z io=z--inodes)Úforcez set-inodeszinodes=)'rrrlrr&r‚r�rtÚset_lve_limits_by_user_idrržrr¥rÀr»Úset_lve_unlimitedrvÚ set_user_inodes_limits_unlimitedrrSÚreset_lve_limitsÚreset_user_inodes_limitsÚGOVERNORrwrÚreset_user_limits_to_defaultsrruÚset_user_statusrr)rÚset_governor_status_for_userÚset_restricted_status_for_userÚ%set_unrestricted_status_for_all_usersr(Ú_is_governor_newer_thenÚset_limits_for_userÚset_user_inodes_limits)r{rârár¼rbrcrrãrBÚret_coder�Úlvectl_error_dictÚis_quota_errorÚquota_error_dictÚ lve_defaultsÚ gov_limitsÚnew_user_statusÚstr9rFr�s ` @r7r[z!CloudlinuxLimits._set_user_actionXsk øø€ØˆØˆØˆàÐ*Ô+ˆ å %¥g¤kÑ 2Ô 2ð RµsÐ:cÐ:cÐ:cÐ:cÕPbÐ:cÑ:cÔ:cÑ7cÔ7cð Rà)¨5Ð1ˆJåðLðLðLðLðLÝ/ðLñLôLñLôLˆFà,-¯EªEÐ2IÑ,JÔ,JˆFÐ(Ñ )ð RØœ<×AÒAÀ#ÀvÈ}Ñ]Ô]�Ø—’ Ñ)Ô)Ð)Ø—’Ð 0Ð2N¸Ð2NÐ2NÀHÐ2NÐ2NØ K¨&Ð KÐ K¸MÐ KÐ KñMôMðMðMøå"ð Rð Rð RØ×$Ò$°´ ÀaÄiÐ%PÐ%PÑQÔQÐQÐQÐQÐQÐQÐQøøøøð Røøøð ˆ]Ô ñ$ &å)­'¬+Ñ6Ô6ð CðTà”L×2Ò2°3¸ ÑFÔFÐFØ—O’O OÐ5Q¸CÐ5QÐ5QÀxÐ5QÐ5QØ$?° Ð$?Ð$?ñAôAðAà(,Ð%Ð%øÝ'Ð)ðTðTðTØ&*�OØ34´9ÈÌÐ(SÐ(SÐ%Ð%Ð%Ð%Ð%Ð%øøøøðTøøøð#ðCà'.�F˜8Ñ$Ø')�F˜8Ñ$Ø1B�F˜8Ô$ XÑ.ð Oà Ð(Ø”N×CÒCÀCÑHÔHÐHØ!&�Ø#'Ð Ð øÝ$Ð&ð Oð Oð OØ!%�Ø./¬iÀAÄIÐ#NÐ#NÐ Ð Ð Ð Ð Ð øøøøð Oøøøðð =Ø")��w‘Ø 6Ð)Ð)Ø')�F˜8Ñ$Ø,<��xÔ  Ñ)ðˆHØ �OŠO˜HÑ %Ô %Ð %à ˆ[Œ>Ñ %å)­'¬+Ñ6Ô6ð Tð Tà#'×#7Ò#7¸¸+¼ÈÑ#NÔ#N�LØ#Ð/Øœ ×5Ò5°c¸<ÑHÔHÐHØŸšÐ(:Ð��xÔ  Ñ*ØÐ!Ô"Ñ*ðSà×+Ò+¨A¨k¬N¸JÑGÔGÐSØœ×?Ò?ÀÑDÔDÐDØ%*�NØ'+Ð$Ð$øÝ(Ð*ðSðSðSØ%)�NØ23´)ÈÌ Ð'RÐ'RÐ$Ð$Ð$Ð$Ð$Ð$øøøøðSøøøð"ðAØ&-�F˜7‘OØ vÐ-Ð-Ø+-˜˜xÑ(Ø0@�F˜8Ô$ WÑ-õ.­gÔ.>Ñ?Ô?ðcðcØ%)×%9Ò%9¸!¸K¼.È'Ñ%RÔ%R˜ ØÔ/×CÒCÑEÔEðeÈ*ÐJ`Ø Ô0×NÒNÈxÐYcÑdÔdÐdøøÝ-Ð0ðcðcðcØ#¨6Ð1Ð1Ø/1˜F 8Ñ,ØBCÄ)ÐXYÔXaÐ7bÐ7b˜˜xÔ(¨Ñ4Ð4Ð4Ð4Ð4Ð4øøøøðcøøøð ˆHØ �OŠO˜HÑ %Ô %Ð %à ˆZŒ=ð Rð RØ"# J¤-°9Ò"<�Ø” ×,Ò,¨X°ÑGÔGÐGØ—’  Ð.@°hÐ.@Ð.@Ø 9¨!¨J¬-Ð 9Ð 9ñ;ô;ð;à�Ø—’ Ñ)Ô)Ð)Ð)øÝ"ð Rð Rð RØ×$Ò$°´ ÀaÄiÐ%PÐ%PÑQÔQÐQÐQÐQÐQÐQÐQøøøøð Røøøå %¥gÔ&6Ñ 7Ô 7ñ3 R½CÐ?nÐ?nÐ?nÐ?nÕUmÐ?nÑ?nÔ?nÑÐ@RÈÐ@RÐ@RØ,@°3Ð,@Ð,@¸BÐ,@Ð,@ñBôBðBðBøå0ð^ð^ð^Ø ×0Ò0¸A¼IÐRSÔR[Ð1\Ð1\Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]øøøøð^øøøøøå$ð Rð Rð RØ×$Ò$°´ ÀaÄiÐ%PÐ%PÑQÔQÐQÐQÐQÐQÐQÐQøøøøð Røøøð ˆZŒ=ð Rð RØ”×5Ò5ؘ˜:œ¨a¯eªeÐ4KÈUÑ.SÔ.Sð6ñôðð—’  Ð.J°SÐ.JÐ.JÀÐ.JÐ.JØ 9¨!¨J¬-Ð 9Ð 9ñ;ô;ð;à�Ø—’ Ñ)Ô)Ð)Ð)øÝ#ð Rð Rð RØ×$Ò$°´ ÀaÄiÐ%PÐ%PÑQÔQÐQÐQÐQÐQÐQÐQøøøøð Røøøð ¨&Ð0Ð0sŠÂACà DÃ'"DÄDÄ9=E7Å7 FÆFÆFÆ8 GÇ G?Ç$G:Ç:G?ÉA J8Ê8 KËKËKÌ:L=Ì= M#ÍMÍM#ÎAO.Ï. P$Ï9!PÐP$ÑA!R)Ò) SÒ3"SÓSÔ)_*ÕAVÖ_*Ö WÖ&"W ×_*× W×_*×*AX>Ø=_*Ø> Y4Ù"Y/Ù*_*Ù/Y4Ù4 _*ÚA[Û_*Û [;Û"[6Û1_*Û6[;Û;A_*ÝA^0Þ/_*Þ0 _&Þ:"_!ß_*ß!_&ß&_*ß* ` ß4"`à` à,A4b!â! câ+"cãccój‡‡ —d}i}g}tˆfd„tD¦«¦«�rddiŠ tˆ ˆfd„tD¦«¦«} ‰jd�O‰j ‰jd|¦«}‰ dd ‰jd›�d |›�¦«nN‰j ‰jd |¦«}‰ d d ‰jd ›�d |›�¦«| |¦«n9#t$r,}‰  |j |j d œ¦«Yd}~nd}~wwxYw|d�½ ‰  |dd¦«} | �Y‰j |d | ¦«}| |¦«‰ dd |d ›�d| ›�¦«d}d} n)#tf$r}d}|j |j d œ} Yd}~nd}~wwxYw|rd|d<i|d<| |dd<|drš ‰j |d ¦«‰ dd |d ›�¦«d} n)#tf$r}d}|j |j d œ} Yd}~nd}~wwxYw|rd|d<i|d<| |dd<d}| |¦«|||fS)NFc3ó8•K—|]}‰jd|›�V—ŒdSrIrC)rr~r{s €r7rz8CloudlinuxLimits._set_reseller_action..s0øèè€Ð@Ð@¨ˆtŒz˜(˜q˜(˜(Ô#Ð@Ð@Ð@Ð@Ð@Ð@r6rbrc3ó„•K—|]:}‰jd|›�®‰ ||¦«‰jd|›�fV—Œ;dSrI)r§r�)rrEr�r{s €€r7rz8CloudlinuxLimits._set_reseller_action..seøèè€ðUðUÈ1Ø37´:¸hÀ1¸h¸hÔ3GÐ3Sð&Ÿ>š>¨!¨QÑ/Ô/°´¸HÀ¸H¸HÔ1EÐFØ3SÐ3SÐ3SÐ3SðUðUr6r´r zset-reseller-defaultrƒr‚r¡zset-reseller-limitsrºrerLzreset-reseller-to-defaultr…Trr„rrfzset-reseller-unlimitedr)rr'r‚r§rtÚset_lvp_defaults_by_reseller_idržÚset_lvp_limits_by_reseller_idrrr¥rÀr»rSÚreset_reseller_limitsÚset_lvp_unlimited) r{rârárbrrcrBršr�ržr›r�s ` @r7rZz%CloudlinuxLimits._set_reseller_actionsÏøø€ØˆØˆØˆå Ð@Ð@Ð@Ð@Õ-?Ð@Ñ@Ô@Ñ @Ô @ñ Rà)¨5Ð1ˆJåðUðUðUðUðUÝ/ðUñUôUñUôUˆFð RØ”:˜jÔ)Ð5ð $œ|×KÒKÈDÌJÐWgÔLhÐjpÑqÔq�HØ—O’OÐ$:ÐÐ %ð PØ#×3Ò3°A°k´NÀEÑJÔJ� ØÐ+à#œ|×AÒAÀ!ÐDUÔBVÐXdÑeÔe�HØ—O’O HÑ-Ô-Ð-Ø—O’OÐ$?ÐAcÈQÐO`ÔMaÐAcÐAcØ$:¨LÐ$:Ð$:ñ<ô<ð<à"'�Ø$(Ð!Ð!øÝ#Ð%ð Pð Pð PØ"&�Ø/0¬yÀQÄYÐ$OÐ$OÐ!Ð!Ð!Ð!Ð!Ð!øøøøð Pøøøðð ?Ø#*��xÑ Ø#%��xÑ Ø->��xÔ  Ñ*à ˆ]Ô ð &ð PØ” ×.Ò.¨qÐ1BÔ/CÑDÔDÐDØ—’Ð 8Ð:\ÀaÐHYÔFZÐ:\Ð:\Ñ]Ô]Ð]Ø$(Ð!Ð!øÝ#Ð%ð Pð Pð PØ"&�Ø/0¬yÀQÄYÐ$OÐ$OÐ!Ð!Ð!Ð!Ð!Ð!øøøøð Pøøøðð ?Ø#*��xÑ Ø#%��xÑ Ø->��xÔ  Ñ*؈HØ �OŠO˜HÑ %Ô %Ð %Ø ¨&Ð0Ð0sKÁB?DÄ EÄ"EÅEÅA;GÇ G4ÇG/Ç/G4ÈAIÉ I?É$I:É:I?cóž—td¬¦«}td„|D¦«¦«|_td„|D¦«¦«|_dS)N)Úcploginr½Údns)Úkeylsc3ó6K—|]}|d|dfV—ŒdS)rr"Nr5©rÚis r7rz/CloudlinuxLimits._init_cache..Wó.èè€Ð&BÐ&B¸¨¨!¬¨a°¬d |Ð&BÐ&BÐ&BÐ&BÐ&BÐ&Br6c3ó6K—|]}|d|dfV—ŒdS)rriNr5r®s r7rz/CloudlinuxLimits._init_cache..Xr°r6)r r‚Ú_user_to_resellerÚ_userdomain_cache)r{Úinfos r7Ú _init_cachezCloudlinuxLimits._init_cacheUsW€ÝÐ:Ð;Ñ;Ô;ˆÝ!%Ð&BÐ&B¸TÐ&BÑ&BÔ&BÑ!CÔ!CˆÔÝ!%Ð&BÐ&B¸TÐ&BÑ&BÔ&BÑ!CÔ!CˆÔÐÐr6có¤—|j€- | ¦«n#t$r i|_YnwxYw|j |d¦«}|S)zi Try to get reseller for given username; :type username: str :rtype: str Nre)r²rµrr�)r{r¼rãs r7rÁz#CloudlinuxLimits._get_reseller_nameZsn€ð Ô !Ð )ð ,Ø× Ò Ñ"Ô"Ð"Ð"øÝð ,ð ,ð ,Ø)+�Ô&Ð&Ð&ð ,øøøàÔ.×2Ò2°8¸SÑAÔAˆ ØÐó ‰ž2±2có —|j€- | ¦«n#t$r i|_YnwxYw|j |d¦«S)z~ Retrive main domain for supplied user :param username: User name :return: Domain name or N/A Nr¸)r³rµrr�rñs r7rðz CloudlinuxLimits.get_user_domainhsi€ð Ô !Ð )ð ,Ø× Ò Ñ"Ô"Ð"Ð"øÝð ,ð ,ð ,Ø)+�Ô&Ð&Ð&ð ,øøøàÔ%×)Ò)¨(°EÑ:Ô:Ð:r·cóÀ— t|¦«}|r|Sn6#ttf$r"}tt |¦«¦«|‚d}~wwxYwtdd|idœ¦«‚)zn Retrive username by domain :param domain_name: Domain name :return: Username NzThere is no domain '%(domain)s'rér2)r ÚIOErrorrr1r>)r{Ú domain_namer¼r�s r7r¿z(CloudlinuxLimits.get_user_name_by_domainusŒ€ð  1Ý# KÑ0Ô0ˆHØð Ø�ð øå�Ð&ð 1ð 1ð 1Ý!¥# a¡&¤&Ñ)Ô)¨qÐ 0øøøøð 1øøøåÐ*KØ+3°[Ð*AðCðCñDôDð Ds‚–A §AÁA có’—|j}d\}}d„}|ds |ddkri|d}| |¦«}t|¦«}|s0t|¦«r!d„}| ||¦«¦«||j|<n¸|dr°|d} |j |¦«}n>#tj $r,}| |j |j dœ¦«Yd}~nd}~wwxYw| |¦«}|s-t|¦«r| ||¦«¦«||j|<||fS) a User identification from CLI options. Common for all commands. May return (None, None) when user wasn't specified in any way and this is a *valid* case when we want to list all users with command like: "... get --json --for-reseller=reseller1" )NNcó—dd|idœS)NrÙr¼rºr5)r¼s r7Ú_username_messagez7CloudlinuxLimits._check_user.._username_messageŽs€Ø@ÈjÐZbÐMcÐdÐdÐ dr6r´rcó—dd|idœS)Nz%(uid)s is not a panel userrárºr5)rás r7Ú _uid_messagez2CloudlinuxLimits._check_user.._uid_message™s€Ø&CÐQVÐX[ÐP\Ð]Ð]Ð]r6rrºN) r§rÜr rÝr¥ryrsrÚrrÛrÀr»)r{rârár¼r¾Ú user_packagerÀr�s r7r¾zCloudlinuxLimits._check_user„s¬€ð ŒJˆØ"‰ ˆˆXð eð eð eð ˆZŒ=ð -˜A˜jœM¨QÒ.Ð.Ø�J”-ˆCØ×;Ò;¸CÑ@Ô@ˆLÝ/°Ñ4Ô4ˆHð ð 8¥D¨¡I¤Ið 8ð^ð^ð^ð×$Ò$ \ \°#Ñ%6Ô%6Ñ7Ô7Ð7à$,ˆDÔ ˜SÑ !Ð !Ø ˆ|Œ_ð -ؘ”ˆHð Rà”k×)Ò)¨(Ñ3Ô3��øÝÔ,ð Rð Rð RØ×$Ò$°´ ÀaÄiÐ%PÐ%PÑQÔQÐQÐQÐQÐQÐQÐQøøøøð Røøøà×;Ò;¸CÑ@Ô@ˆLØð B¥D¨¡I¤Ið BØ×$Ò$Ð%6Ð%6°xÑ%@Ô%@ÑAÔAÐAà$,ˆDÔ ˜SÑ !à�Hˆ}ÐsÂB9Â9C4Ã"C/Ã/C4r"có~—|jr9| dtj¦«i¦«t|d¦«nh t t |d¦«| di¦«z¦«n-#t$r }t d|›d|›d�¦«Yd}~nd}~wwxYwtj |¦«dS) z‹ Print error and exit :param message dict: Dictionary with keys "result" as string and optional "context" as dict r€Trr»zError: z [ú]N) r„r=rƒrr”r>r�ÚKeyErrorr•Úexit)r{rÀÚ error_coder�s r7r¥z CloudlinuxLimits._error_and_exit®sÚ€ð Œ=ð 1Ø �NŠN˜K­¬©¬Ð5Ñ 6Ô 6Ð 6Ý ˜W dÑ +Ô +Ð +Ð +ð 1Ý•c˜' (Ô+Ñ,Ô,¨w¯{ª{¸9ÀbÑ/IÔ/IÑIÑJÔJÐJÐJøÝð 1ð 1ð 1ÝÐ/ Ð/Ð/ WÐ/Ð/Ð/Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0øøøøð 1øøøå Œ�ÑÔÐÐÐsÁ9A<Á< B&ÂB!Â!B&)Fr})rˆ)r")0r2r3r4Ú__doc__r§r„rßryr²r³ror|r‡Ú staticmethodržr²r¦r«r­r®r¯r×rÅrÜrîrêr‚rërÆr?rrrr¬r?rSrªr@r^r[rZrµrÁrðr¿r¾r¥Ú __classcell__)rqs@r7ririFsØø€€€€€ððð €Eà€HàÐà€KàÐØÐð$ð$ð$ð$ð$ð ð ð ð <ð <ð <ð <ðð Vð Vð Vñ„\ð Vð"Hð"Hð"HðH ð ð ð&ð&ð&ðP 'ð 'ð 'ð Nð Nð Nð Nð Nð Nð ð ð ðB8ð8ð8ðt=ð=ð=ðððð4ððð¨$ððððð*AðAðAðFC cðC°4ðCÀðCÈ$ðCðCðCðCð66-ð6-ð6-ðp!ð!ð!ð* /ð /ð /ð#ð#ð#ðJððñ„\ðð" ð ð ð'=ð'=ð'=ðRXðXðXðt{1ð{1ð{1ðz>1ð>1ð>1ð@DðDðDð ð ð ð ;ð ;ð ;ð Dð Dð Dð(ð(ð(ðTðððððððr6ricó —eZdZd„Zd„Zd„ZdS)rncó¬—t¦«|_t¦«|_t ¦«|_t ¦«|_i|_dSrk) rrsrrurrvr+rxryrzs r7r|zCloudlinuxLimitsNoLve.__init__Ás?€Ý‘g”gˆŒ Ý‘x”xˆŒ Ý#™œˆŒÝ;Ñ=Ô=ˆÔ؈ÔÐÐr6cóv—ddlm} t||¦«d¦«}n#t$rd}YnwxYw|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 r)Úreseller_package_by_uidr"rˆ)Úclcommon.cpapirÍr>Ú IndexError)r{rárÍÚ package_names r7rÜz1CloudlinuxLimitsNoLve.get_package_name_by_user_idÈsg€ð ;Ð:Ð:Ð:Ð:Ð:ð ÝÐ6Ð6°sÑ;Ô;¸AÔ>Ñ?Ô?ˆLˆLøÝð ð ð àˆLˆLˆLð øøøðÐs ˆ'§ 6µ6có‡ —i}|j}|j ¦«rd|d<nd|d<|d€$|j ¦«rd|d<nd|d<t |dt ¦«r|d d¦«ndŠ tˆ fd „tD¦«¦«}g}|j   ¦«D�]\}}|  ||¦«}|d r�|j ¦«rh |j  |d ¦«}|rdnd|d<n=#t$r0} d |d<d |vri|d <t | ¦«|d d<Yd} ~ nd} ~ wwxYw| |¦«|d<i} |d€|dr| || |¦«| |d<| |¦«�Œt%|¦«|d<||d<|dsg|d<| |d¦«dS)r÷rørùrúr NrûrýrMc3ó*•K—|] }|‰ p|‰vfV—ŒdSrkr5rÿs €r7rz9CloudlinuxLimitsNoLve._get_action_list..ïrr6rr¼rrr rLrBr rrTr)r§rurrvrr�r>rQr‚r%ryr rîrrrÜrrrór‡) r{rrâr!rrár¼rìr#r�rBrs @r7rÆz&CloudlinuxLimitsNoLve._get_action_listØsrø€ð ˆà ŒJˆð Œ<× )Ò )Ñ +Ô +ð *Ø(ˆF�8Ñ Ð à)ˆF�8Ñ à Ð Ô Ð &àŒ~×0Ò0Ñ2Ô2ð -Ø"+��w‘�à",��w‘å)3°A°j´MÅ3Ñ)GÔ)GÐ QˆQˆzŒ]× Ò  Ñ %Ô %Ð %ÈTˆÝÐEÐEÐEÐEÕ4DÐEÑEÔEÑEÔEˆðˆà!Ô-×3Ò3Ñ5Ô5ð ñ ‰MˆC�Ø×5Ò5°c¸8ÑDÔDˆDà�HŒ~ð 8 $¤,×"@Ò"@Ñ"BÔ"Bð 8ð8Ø$(¤L×$@Ò$@ÀÀjÔAQÑ$RÔ$R�MØ2?Ð%O Y YÀZ�D˜‘N�NøÝ&ð8ð8ð8à'.�F˜8Ñ$Ø vÐ-Ð-Ø+-˜˜xÑ(Ý14°Q±´�F˜8Ô$ XÑ.Ð.Ð.Ð.Ð.Ð.øøøøð 8øøøð#×>Ò>¸sÑCÔCˆD�‰O؈FØÐ!Ô"Ð*¨t°H¬~Ð*Ø×'Ò'¨¨V°VÑ<Ô<Ð<Ø#ˆD�‰NØ �LŠL˜Ñ Ô Ð Ñ õ˜e™*œ*ˆˆw‰Øˆˆw‰ØÐ!Ô"ð %Ø"$ˆF�;Ñ ð �Š˜ Ñ%Ô%Ð%؈qsÄ )D6Ä6 E0Å&E+Å+E0N)r2r3r4r|rÜrÆr5r6r7rnrn¿sA€€€€€ððððððð :ð:ð:ð:ð:r6rn)Dr�r‘r•rƒÚ collectionsrÚclcommonrÚclcommon.clfuncrÚclcommon.clexceptionrrÎrrr r r r r rrrÚclcommon.cpapi.cpapiexceptionsrÚ clcommon.librrrÚ cli_utilsrrÚ cllicenserÚcllimitsrrrrÚcllimits.clquota_librrrÚ lvectllibrr r!Ú arg_parsersr#r$r%r&r'r(r)r*r+r,Úutilsr-r.r/r1rsÚADMIN_RESELLER_NAMESr8rirnr5r6r7úráswðð € € € Ø € € € Ø € € € Ø € € € Ø#Ð#Ð#Ð#Ð#Ð#àÐÐÐÐÐØ*Ð*Ð*Ð*Ð*Ð*Ø3Ð3Ð3Ð3Ð3Ð3ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð9Ð8Ð8Ð8Ð8Ð8ØIÐIÐIÐIÐIÐIÐIÐIÐIÐIØ6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø*Ð*Ð*Ð*Ð*Ð*ØEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEð:ð:ð:ð:ð:ð:ð:ð:ð:ð:àNÐNÐNÐNÐNÐNÐNÐNÐNÐNð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð6ð 0ð0ð0ð0ð0ð0ð0ð0ð0ð0ð ð ð ð ð Ð(ñ ô ð ð ðð DÐ CØMÐMØKÐKðððHÐGØ BÐ Bð ?ð ?ð ?ð ?à @Ð @ð'ð€ ð,.Ð-Ð-ÐØ# XÐ.Ððvðvðvðvðvñvôvðvðr#SðSðSðSðSÐ,ñSôSðSðSðSr6