§ ½@¾jàãóx—ddlZddlmZddlmZddlmZmZddlm Z ddl m Z m Z ddl mZGd„d ¦«ZdS) éN)ÚNameMap)Úreseller_lvp_list)Ú exec_utilityÚisolated_child_env)ÚAVAILABLE_LVE_KEYS)Ú(_convert_memory_value_to_adaptive_formatÚ"check_pmem_lower_bound_from_string)ÚLvectlExceptioncó0—eZdZd„Zdd„Zdd„Zd„Zd„ZdS) Ú LveCtlPackagecóˆ—d|_d|_d|_t¦«|_|j ¦«dS)Nz/usr/sbin/lvectl)Ú _lve_versionÚ _UTILITY_PATHÚ_packages_data_listrÚ _name_mapÚ link_xml_node)Úselfs ú$py/clpackages/lvectl_packages_lib.pyÚ__init__zLveCtlPackage.__init__sA€Ø ˆÔØ/ˆÔð$(ˆÔ Ý ™œˆŒØ Œ×$Ò$Ñ&Ô&Ð&Ð&Ð&óFcóh‡—‰j�dSddg}|s| d¦«t‰j|t ¦«¬¦«\}}t j|¦«}|dkrt|d¦«‚|d}g‰_tˆfd „t¦«D¦«¦«}|D]þ}|d } | d vrd } |d } i} t|d¦«| d<t|d|¦«| d<d|vrt|d|¦«| d<t|d¦«| d<d|vrt|d¦«| d<dt|d¦«i| d<d|vrt|d¦«| d<ddvrd} n| |v} | | | | d œ} ‰j | ¦«ŒÿdS)!z¥ Loads all package info from lvectl :param human_readable_numbers: PMEM and VMEM limits in KBytes, MBytes or GBytes :return: None Nzall-package-listz--jsonz--bytes©ÚenvrÚmsgÚdatac3óL•K—|]}‰j |¦«V—ŒdS)N)rÚget_name)Ú.0Úuidrs €rú z+LveCtlPackage._load_info..=s3øèè€Ð[Ð[À˜tœ~×6Ò6°sÑ;Ô;Ð[Ð[Ð[Ð[Ð[Ð[rÚRESELLER)zN/AÚrootÚIDÚSPEEDÚspeedÚVMEMÚvmemÚPMEMÚpmemÚEPÚepÚNPROCÚnprocÚallÚIOÚioÚIOPSÚiopsÚprovider)r"ÚF)Úpackager3ÚlimitsÚ enabledLimits) rÚappendrrrÚjsonÚloadsr ÚsetrÚintr)rÚhuman_readable_numbersÚ lvectl_cmdÚret_codeÚlvectl_data_strÚ loaded_jsonÚ json_dataÚactive_resellersÚ package_dataÚ reseller_nameÚ package_nameÚpackage_limitsr7Úpackage_result_dicts` rÚ _load_infozLveCtlPackage._load_info%s:ø€ð Ô #Ð /Ø ˆFà(¨(Ð3ˆ Ø%ð )Ø × Ò ˜iÑ (Ô (Ð (Ý$0°Ô1CÀZÕUgÑUiÔUiÐ$jÑ$jÔ$jÑ!ˆ�/Ý”j Ñ1Ô1ˆ Ø �qŠ=ˆ=Ý! +¨eÔ"4Ñ5Ô5Ð 5Ø Ô'ˆ Ø#%ˆÔ õÐ[Ð[Ð[Ð[ÕGXÑGZÔGZÐ[Ñ[Ô[Ñ[Ô[ÐØ%ð" Að" AˆLØ(¨Ô4ˆMØ Ð'Ð'Ø &� Ø'¨Ô-ˆLàˆNÝ&)¨,°wÔ*?Ñ&@Ô&@ˆN˜7Ñ #Ý%MؘVÔ$Ø&ñ&ô&ˆN˜6Ñ "ð˜Ð%Ð%Ý)QØ  Ô(Ø*ñ*ô*�˜vÑ&õ$' |°DÔ'9Ñ#:Ô#:ˆN˜4Ñ Ø˜,Ð&Ð&Ý*-¨l¸7Ô.CÑ*DÔ*D�˜wÑ'Ø$)­3¨|¸DÔ/AÑ+BÔ+BÐ#CˆN˜4Ñ Ø˜Ð%Ð%Ý),¨\¸&Ô-AÑ)BÔ)B�˜vÑ&à˜\Ð)Ð)Ø %� � à -Ð1AÐ A� à'Ø)Ø(Ø!.ð #ð#Ð ð Ô $× +Ò +Ð,?Ñ @Ô @Ð @Ð @ðE" Að" Arcóæ—| |¬¦«|s|jSg}|jD]G}|d|kr9|r"|d|kr| |¦«Œ2| |¦«ŒH|S)a¨ Get limits for supplied reseller and package :param reseller_name_arg: Reseller name. If None - all resellers :param package_name_arg: Package name. Only if reseller name is provided. If None - all packages :param human_readable_numbers: PMEM and VMEM limits in KBytes, MBytes or GBytes :return: Data list List item format: { "package": "Basic_16", "provider": "Reseller_Peter", "limits": { "vmem": 768, "pmem": 768, "ep": 25, "nproc": 50, "iops": 100, "speed": { "all": 50 }, "io": { "all": 5 }, "inodes": { "soft": 100000, "hard": 200000 } } )r=r3r5)rIrr8)rÚreseller_name_argÚpackage_name_argr=Ú out_data_listrDs rÚget_reseller_package_limitsz)LveCtlPackage.get_reseller_package_limitsbs�€ð$ �ŠÐ/EˆÑFÔFÐFØ ð ,àÔ+Ð +àˆ Ø Ô4ð 7ð 7ˆLؘJÔ'Ð+<Ò<Ð<à#ð7à# IÔ.Ð2BÒBÐBØ%×,Ò,¨\Ñ:Ô:Ð:øð"×(Ò(¨Ñ6Ô6Ð6øØÐrcó$—d|||rd|›d�nddœdœS)Nz3%(what)s set error for package=%(package)s%(error)sz [ú]r4)Úwhatr5Úerror)ÚmessageÚcontext©)rÚparamrFÚerrs rÚ __set_errorzLveCtlPackage.__set_error†s<€ØPØ$)°lØ47Ð%? [¨# [ [ [ [¸RðAðAðBðBð BrcóP—|sdSd|vr&t|d¦«}|rt|¦«‚d|g}|dkr| d|›�¦«| ¦«D]l\}}|tvr$t| ||d¦«¦«‚|dkr| ¦«r|›d�}| d |›d |›�¦«Œmt|j|d t¦«¬ ¦«\}} } |d ks| r$t| d|| ¦«¦«‚dS)aÏ Sets limits for supplied package :param reseller_name: Reseller name :param package_name: Package name :param limits_to_set: new LVE limits. Available keys: speed, vmem, pmem, maxEntryProcs, io, nproc, iops All other keys are ignoring. If some parameter absent on current LVE version (for example pmem on LVE4), it will be ignored too. :return: None Nr)zpackage-set-extr"z --reseller=z unknown limitr%ú%z--ú=TrrÚLimits) r r r8ÚitemsrÚ_LveCtlPackage__set_errorÚisdigitrrr) rrErFÚ limits_to_setrRr>Ú limit_nameÚ limit_valuer?Ú lvectl_stdoutÚ lvectl_stderrs rÚset_reseller_package_limitsz)LveCtlPackage.set_reseller_package_limits‹s}€ðð Ø ˆFà �]Ð "Ð "Ý6°}ÀVÔ7LÑMÔMˆEØð -Ý% eÑ,Ô,Ð,ð(¨Ð6ˆ Ø ˜FÒ "Ð "Ø × Ò Ð;¨MÐ;Ð;Ñ <Ô <Ð <ð(5×':Ò':Ñ'<Ô'<ð ?ð ?Ñ #ˆJ˜ ØÕ!3Ð3Ð3Ý% d×&6Ò&6°zÀ<ÐQ`Ñ&aÔ&aÑbÔbÐbؘWÒ$Ð$¨×)<Ò)<Ñ)>Ô)>Ð$Ø!,Ð/Ð/Ð/� Ø × Ò Ð= :Ð=Ð=° Ð=Ð=Ñ >Ô >Ð >Ð >Ý1=Ø Ô   ¨DÕ6HÑ6JÔ6Jð2 ñ2 ô2 Ñ.ˆ�- ð �qŠ=ˆ=˜Mˆ=å! $×"2Ò"2°8¸\È=Ñ"YÔ"YÑZÔZÐ Zð ˆ=rN)F)Ú__name__Ú __module__Ú __qualname__rrIrNr^rerUrrr r sw€€€€€ð 'ð 'ð 'ð;Að;Að;Að;Aðz"ð"ð"ð"ðHBðBðBð &[ð&[ð&[ð&[ð&[rr )r9ÚlveapirÚ lvectllibrÚ cllimits.librrÚcllimits.lib.arg_parsersrÚcllimits.lib.utilsrr Úcllimitsr r rUrrúrosæðð € € € àÐÐÐÐÐØ'Ð'Ð'Ð'Ð'Ð'Ø9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø7Ð7Ð7Ð7Ð7Ð7ðDðDðDðDðDðDðDðDà$Ð$Ð$Ð$Ð$Ð$ð\[ð\[ð\[ð\[ð\[ñ\[ô\[ð\[ð\[ð\[r