§ Rl¾j]@ã óº—ddlmZmZddlmZmZddlmZmZmZm Z m Z ddl m Z ddl mZddlmZdZhd £Zhd £Zd hZd d hZeezezezZedhzZee j¦«rehd£zZnedhzZehd£zZgd¢Zd„Zd„Zeide“de“de“de“de de¦«“deed„d¬¦«“de“d e“d!e deed"„¦«e¦«d#¬¦«“d$e“d%e deee ¦«d&„¦«eed'„¦«d(„¦«d)¬¦«“d*e deee ¦«d+„¦«d,¬¦«“d-e deed.„¦«d/¬¦«“d0e“d1e deed2„¦«d/¬¦«“d3e de¦«“d4e de¦«“id5e ded#¬¦«“d6e dd7„e›d8�¬¦«“d9e dd:„e›d;�¬¦«“d<e dd=„e›d>�¬¦«“d?e“d@e de¦«“dAe de¦«“dBe de¦«“dCe de¦«“dDe de¦«“dEe de¦«“dFe de¦«“dGe deee ¦«dH„¦«dI¬¦«“dJe deee ¦«dK„¦«dL¬¦«“dMe de¦«“dNe“¥¦«Z!dOZ"dP #dQ„e"D¦«¦« $¦«Z%GdR„dS¦«Z&GdT„dUe&¦«Z'dS)Vé)ÚTupleÚUnion)Ú DocoptExitÚdocopt)ÚSchemaÚAndÚUseÚOrÚ SchemaError)ÚFeature)Úis_panel_feature_supportedé)Ú VALUES_STRzcloudlinux-limits>ÚioÚiopsÚpmemÚvmemÚnprocÚspeedÚ maxEntryProcs>rrrrrrÚinodesz mysql-cpuzmysql-ioÚall>Úcagefsú mysql-govúmysql-restrictr>úmysql-unrestrict-allrr)ú--mysql-restrictú--mysql-unrestrict-allú --mysql-govú --mysql-ioú --mysql-cpuú--cagefsú--inodescóR—tt|¦«tz ¦«dkS)z, Validate limits keys for --default r)ÚlenÚsetÚAVAILABLE_DEFAULTS©Úkeyss úO/opt/cloudlinux/venv/lib64/python3.11/site-packages/cllimits/lib/arg_parsers.pyÚ_default_keys_validater+#s#€õ �s�4‰yŒyÕ-Ñ-Ñ .Ô .°!Ò 3Ð3ócó’—tt| d¦«¦«tt¦«z ¦«dkS)z Validate limits keys ú,r)r%r&ÚsplitÚAVAILABLE_LIMITSr(s r*Ú_limits_keys_validater1*s7€õ �s�4—:’:˜c‘?”?Ñ#Ô#¥cÕ*:Ñ&;Ô&;Ñ;Ñ <Ô <ÀÒ AÐAr,r&Úgetúdisable-reseller-limitsúenable-reseller-limitsz--pmem-lower-boundNú--jsoncó—|S©N©©Úxs r*úr;:s€ !€r,z4use --json option, other modes currently unsupported)Úerrorz--human-readable-numbersú --unlimitedú --defaultcó,—| d¦«S)Nr.)r/r9s r*r;r;=s€¨A¯GªG°C©L¬L€r,z Invalid keysú--save-all-parametersú--lve-idcó(—t|¦«dkS©Nr©Úintr9s r*r;r;?s€µ°Q±´¸1²€r,cóD—t|¦« ¦«Sr7)ÚstrÚlowerr9s r*r;r;@s€¥S¨¡V¤V§\¢\¡^¤^€r,có—|dkS)NÚdefaultr8r9s r*r;r;As €  i¢€r,z8--lve-id must be non-negative integer value or 'default'z --reseller-idcó(—t|¦«dkSrCrDr9s r*r;r;Cs€µc¸!±f´fÀ²k€r,z0--reseller-id must be non-negative integer valueú--reseller-namecóX—| ¦« o| d¦« S©Nú-©ÚisdigitÚ startswithr9s r*r;r;Es%€°q·y²y±{´{°?Ð3\È1Ï<Ê<ÐX[ÑK\ÔK\ÐG\€r,zInvalid reseller namez--allú--for-resellercóX—| ¦« o| d¦« SrNrPr9s r*r;r;Hs%€°a·i²i±k´k°/Ð2[È!Ï,Ê,ÐWZÑJ[ÔJ[ÐF[€r,ú --usernameú--domainú--limitsrcó —|dvS)N)ÚignoredÚwatchedr8r9s r*r;r;Ms € aÐ+AÐ&A€r,z: 'ignored', 'watched'r"có —|dvS)N)ÚenabledÚdisabledr8r9s r*r;r;Os € 1Ð(?Ð#?€r,z: 'enabled', 'disabled'rcó —|dvS)N)Ú restrictedÚ unrestrictedr8r9s r*r;r;Qs €¨1Ð0NÐ+N€r,z: 'restricted', 'unrestricted'rz--speedz--pmemz--vmemz--nprocz--ioz--iopsz--maxEntryProcsr!có—|dkSrCr8r9s r*r;r;[s €°A¸²F€r,z.--mysql-cpu must be non-negative integer valuer có—|dkSrCr8r9s r*r;r;_s €°1¸²6€r,z---mysql-io must be non-negative integer valuer#ú--help) zUset [--json] (--lve-id | --username ) (--unlimited) [--for-reseller ]zZset [--json] (--lve-id | --username | --reseller-name ) (--default )z›set [--json] (--lve-id | --username ) (--mysql-gov | --cagefs | --mysql-restrict )z%set [--json] (--mysql-unrestrict-all)zÞset [--json] (--lve-id | --username ) [--speed --io --nproc --pmem --vmem --iops --inodes --maxEntryProcs --mysql-cpu --mysql-io --save-all-parameters]z×set [--json] (--lve-id | --username | --reseller-name ) [--speed --io --nproc --pmem --vmem --iops --maxEntryProcs ] [--default ] [--for-reseller ]z2set [--json] (--reseller-name ) (--unlimited)z'set [--json] (--pmem-lower-bound=)zŸ[get] [--json] [--lve-id | --username | --reseller-name | --domain ] [--limits=] [--human-readable-numbers] [--for-reseller ]zNdisable-reseller-limits (--reseller-id | --reseller-name ) [--json]zWenable-reseller-limits ((--reseller-id | --reseller-name ) | --all) [--json]z (-h | --help)z c#ó.K—|]}t›d|›�V—ŒdS)ú N)Ú PROG_NAME)Ú.0Úcmds r*ú ri‰s0èè€ÐAÐA¨s�Ð*Ð* SÐ*Ð*ÐAÐAÐAÐAÐAÐAr,c ó@—eZdZdZde›d�ZdZedede de e effd„¦«Z de de e effd „Z d ede e effd „Zde d e de eeffd „Zedefd„¦«Zeded ede eeffd„¦«Zdde d e de e eeefffd„ZdS)ÚCloudlinuxLimitsOptsParserzµ Parse arguments for cloudlinux-limits command :param argv: sys.argv :param _is_json_need: sys.argv contains --json key :return cortege: (error_flag, s_message) ú5Utility to get/set any Cloudlinux limits Usage: a> Options: --json Return data in JSON format. --lve-id LVE id. will display record only for that LVE id. --username Execute command only for specific user. --reseller-name Execute command only for specific reseller. --reseller-id Execute command only for specific reseller. --all Execute command for all resellers --for-reseller Use supplied reseller for get/set data. --domain Show data only for specific domain --limits Available keys: speed,nproc,pmem,vmem,maxEntryProcs,io, iops,mysql-gov,mysql-cpu,mysql-io,cagefs,inodes --human-readable-numbers Return PMEM and VMEM limits in KBytes, MBytes or GBytes --unlimited Set all limits to unlimited. --default [limits] Reset limits to the Package defaults. List of comma-separated limits to reset them to default or "all" --mysql-gov Monitor or ignore by MySQL governor. --cagefs Enable or disable CageFS for a user. --mysql-restrict <[un]restricted> Set user restrict status with dbctl (restricted or unrestricted). --mysql-unrestrict-all Unrestrict all restricted users with dbctl. --speed Limit CPU usage for LVE | LVP. --pmem Limit physical memory usage for applications inside LVE | LVP. --vmem Limit virtual memory for applications inside LVE. --nproc Limit number of processes for LVE | LVP. --io Define io limits for LVE | LVP (KB/s). --iops Limit io per second for LVE | LVP. --maxEntryProcs Limit number of entry processes for LVE | LVP. --mysql-cpu Set MySQL governor CPU limit (pct). --mysql-io Set MySQL governor IO limit (read + write MB/s) --inodes Set inode limits. N - soft, M - hard. --pmem-lower-bound Set the PMEM lower bound for the limits. --save-all-parameters Save all parameters even if they match with defaults settings. -h, --help Show this help message and exit )r&r2r3r4ÚoptionÚargvÚreturncó¦—d}d}|D]=}| |¦«rd}Œ|s!tD]}| |¦«r|}ŒŒ>|r |rdd|›d�fSdS)zÊ Checks options compatibility with admin options :return: Cortege (flag, message) flag: True/False - compatible/not compatible message - comment if flag is False FÚTzERROR: option 'z)' is not compatible with '--for-reseller'©Trq)rRÚADMIN_ONLY_OPTIONS)rmrnÚ option_foundÚadmin_option_nameÚargÚ admin_options r*Ú!_is_option_compatible_with_adminszÔ>‰ ˆˆGØð Ø�w�;Ð ð &ݘ$œ.¨$Ñ/Ô/ˆDˆDøÝð &ð &ð &Ø_ˆNØð :Ø &¨4¬>Ñ"9Ñ9�Ø�~Ð%Ð %Ð %Ð %ð  &øøøð ×7Ò7¸Ñ=Ô=‰ ˆˆGØð Ø�w�;Ð Ø�Rˆxˆs 6¶AÁAcó—tS)zQ Returns schema that should be used to validate parsed arguments )Ú global_schemar8r,r*Ú _get_schemaz&CloudlinuxLimitsOptsParser._get_schemas €õ Ðr,Úschemacóˆ— | |¦«}n(#t$r}it|¦«fcYd}~Sd}~wwxYw|dfS)z@ Validate parsed arguments with provided schema Nrq)Úvalidater rG)r‹r~Úes r*Ú_validate_schemaz+CloudlinuxLimitsOptsParser._validate_schema sa€ð  Ø—?’? 4Ñ(Ô(ˆDˆDøÝð ð ð Ø•s˜1‘v”v�:Ð Ð Ð Ð Ð Ð øøøøð øøøà�Rˆxˆs‚˜ =¢8²=¸=Fcóú‡—| ||¦«\Š}‰sd|fStˆfd„|jD¦«¦«sd‰d<| ¦«}| |‰¦«\Š}‰sd|fSd‰fS)zF Parses and validates arguments passed to the utility Fc3óB•K—|]}‰ |¦«V—ŒdSr7)r2)rgÚcommandr~s €r*riz8CloudlinuxLimitsOptsParser.parse_args..s/øèè€ÐBÐB¨�4—8’8˜GÑ$Ô$ÐBÐBÐBÐBÐBÐBr,Tr2)r‡ÚanyÚcommandsrŠr�)rzrnr‚r|r‹r~s @r*Ú parse_argsz%CloudlinuxLimitsOptsParser.parse_argss¦ø€ð×*Ò*¨4°Ñ9Ô9‰ ˆˆgØð "ؘ'�>Ð !åÐBÐBÐBÐB°D´MÐBÑBÔBÑBÔBð ØˆD�‰Kà×!Ò!Ñ#Ô#ˆØ×-Ò-¨f°dÑ;Ô;‰ ˆˆgØð "ؘ'�>Ð !Ø�TˆzÐr,N©F)Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚUSAGEr„r”Ú staticmethodrGÚlistrÚboolrxr}Údictr�r‡rrŠr�rr•r8r,r*rkrkŒs°€€€€€ððð %ð ð%ð%ð%€IðfS€Hàð°#ð¸TðÀeÈDÐRUÈIÔFVðððñ„\ðð*&°$ð&¸5ÀÀsÀÔ;Kð&ð&ð&ð&ð°ð¸%ÀÀcÀ Ô:Jððððð $ð°ð¸%ÀÀcÀ Ô:Jððððð*ð˜ðððñ„\ðð ð ð¨tð¸¸dÀC¸iÔ8Hðððñ„\ððð˜tð¨dð¸uÀTÈ5ÐQTÐVZÐQZÔK[ÐE[Ô?\ððððððr,rkc 󨇗eZdZde›de›de›de›de›de›d� ZdZd ed eee ffd „Z d e d eee ffd „Z e d efd„¦«Zdd eded eeee e fffˆfd„ ZˆxZS)ÚCloudlinuxLimitsNoLveOptsParserrlzT set [--json] (--lve-id | --username ) (--cagefs ) zD set [--json] (--lve-id | --username ) (--unlimited) zH set [--json] (--lve-id | --username ) (--default ) z] set [--json] (--lve-id | --username ) [--inodes --save-all-parameters] z[ [get] [--json] [--lve-id | --username | --domain ] [--limits=] aç (-h | --help) Options: --json Return data in JSON format. --lve-id LVE id. will display record only for that LVE id. --username Execute command only for specific user. --cagefs Enable or disable CageFS for a user. --unlimited Set supported limits to unlimited. --default [limits] Reset supported limits to the Package defaults. List of comma-separated limits to reset them to default or "all" --domain Show data only for specific domain --limits Available keys: inodes --inodes Set inode limits. N - soft, M - hard. --save-all-parameters Save all parameters even if they match with defaults settings. -h, --help Show this help message and exit )r&r2rnrocó—dS©Nrrr8)rzrns r*r}z=CloudlinuxLimitsNoLveOptsParser._perform_checks_before_docoptCó€àˆxr,r~có—dSr£r8r€s r*r�z r2r&rcr5r"rVr#rWrAr>rUr=r@có$•—i|] \}}|‰v¯ ||“Œ Sr8r8)rgrmÚvalueÚschema_optionss €r*ú z?CloudlinuxLimitsNoLveOptsParser._get_schema..Ps4ø€ð ð ð Ù+˜f eؘÐ'Ð'ð �EØ'Ð'Ð'r,)r‰r‹Úitemsr)Úoptionsr©s @r*rŠz+CloudlinuxLimitsNoLveOptsParser._get_schemaKs\ø€ðqðqðqˆð ð ð ð Ý/<Ô/C×/IÒ/IÑ/KÔ/Kð ñ ô ˆõ�g‰ŒÐr,Fr‚cóì•—t¦« ||¦«\}}|sd|fStj ¦«D]&\}}| ||t urdnd¦«Œ'd|fS)NFT)Úsuperr•r‰r‹r«Ú setdefaultrž)rzrnr‚r…r~Úkeyr¨Ú __class__s €r*r•z*CloudlinuxLimitsNoLveOptsParser.parse_argsVs…ø€Ý‘7”7×%Ò% d¨GÑ4Ô4‰ˆˆDØð ؘ$�;Ð õ(Ô.×4Ò4Ñ6Ô6ð Cð C‰JˆC�Ø �OŠO˜C¨%µ4¨-¨-  ¸TÑ BÔ BÐ BÐ BØ�TˆzÐr,r–)r—r˜r™rfr„r”r�rržrGr}rŸr�rœrrŠrr•Ú __classcell__)r±s@r*r¡r¡'sWø€€€€€ðððððð ðð ð ðð ð ðððððððð€Ið2€Hð°$ð¸5ÀÀsÀÔ;Kððððð°ð¸%ÀÀcÀ Ô:Jðððððð˜ðððñ„\ðð ð ˜tð ¨dð ¸uÀTÈ5ÐQTÐVZÐQZÔK[ÐE[Ô?\ð ð ð ð ð ð ð ð ð ð r,r¡)(Útypingrrrrr‹rrr r r Úclcommon.constr Úclcommon.cpapir ÚutilsrrfÚAVAILABLE_LVE_KEYSÚAVAILABLE_LVP_KEYSÚAVAILABLE_QUOTA_KEYSÚAVAILABLE_MYSQL_KEYSÚAVAILABLE_KEYSr'ÚLVEr0ÚAVAILABLE_MYSQL_KEYS_ALLrsr+r1ržrGrEr‰Ú USAGE_CMDSÚjoinÚstripr›rkr¡r8r,r*úrÁs=ðð ÐÐÐÐÐÐÐà%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4à"Ð"Ð"Ð"Ð"Ð"Ø5Ð5Ð5Ð5Ð5Ð5àÐÐÐÐÐà € àVÐVÐVÐØNÐNÐNÐØ �zÐØ# ZÐ0ÐØ#Ð&:Ñ:Ð=QÑQÐTfÑf€Ø# u gÑ-ÐØÐ˜gœkÑ*Ô*ð9Ø%Ð(QÐ(QÐ(QÑQÐÐà+¨x¨jÑ8ÐØ/Ð2iÐ2iÐ2iÑiÐð=ð=ð=Ðð4ð4ð4ðBðBðBð�ð4Ø ˆ4ð4à ˆ4ð4ð˜tð4ð˜dð 4ð ˜"˜"˜T 3™-œ-ð 4ð  ˆcˆc�$˜ ˜ Ð+aÐbÑbÔbð 4ð ð4ð�4ð4ð���D˜#˜#˜c˜cÐ"8Ð"8Ñ9Ô9Ð;QÑRÔRÐZhÐiÑiÔið4ð˜Tð4ð���4˜˜˜S˜S ™XœXÐ'<Ð'<Ñ=Ô=Ø�3�s�sÐ3Ð3Ñ4Ô4Ø/Ð/ñ1ô1àSðUñUôUð4ð�R�R˜˜c˜c # # c¡(¤(Ð,AÐ,AÑBÔBØPðRñRôRð4ð"�r�r˜$   CÐ)\Ð)\Ñ ]Ô ]Ø 7ð9ñ9ô9ð#4ð& ˆTð'4ð(�b�b˜˜s˜s 3Ð([Ð([Ñ\Ô\Ø6ð8ñ8ô8ð)4ð,�"�"�T˜3‘-”-ð-4ð.���4˜‘ ” ð/4ð4ð0���4Ð.°nÐEÑEÔEð14ð2�2�2�dÐAÐAØ)ÐAÐAÐAðCñCôCð34ð6���4Ð?Ð?Ø&Ð?Ð?Ð?ðAñAôAð74ð:˜˜˜4Ð!NÐ!NØ$.Ð!NÐ!NÐ!NðPñPôPð;4ð>˜dð?4ð@ˆrˆr�$˜‰}Œ}ðA4ðB ˆbˆb��s‰mŒmðC4ðD ˆbˆb��s‰mŒmðE4ðFˆrˆr�$˜‰}Œ}ðG4ðH ˆBˆBˆt�S‰MŒMðI4ðJ ˆbˆb��s‰mŒmðK4ðL�r�r˜$ ‘}”}ðM4ðN�2�2�d˜C˜C   C¡¤Ð*:Ð*:Ñ;Ô;ØLðNñNôNðO4ðV�"�"�T˜3˜3˜s˜s 3™xœxÐ)9Ð)9Ñ:Ô:ØJðLñLôLðW4ðd���4˜‘ ” ðe4ðf ˆdðg4ð4ñ4ô4€ ðl€ ð> � Š ÐAÐA°jÐAÑAÔAÑAÔA×GÒGÑIÔI€ðXðXðXðXðXñXôXðXðv8ð8ð8ð8ð8Ð&@ñ8ô8ð8ð8ð8r,