5/9erddlmZddlZddlmZddlmZddlmZddl m Z ddl m Z Gdd e ZdS) )absolute_importN)NameMap)lvp_list) exec_utility)(_convert_memory_value_to_adaptive_format)LvectlExceptionc0eZdZdZddZddZdZdZdS) LveCtlPackagecd|_d|_d|_t|_|jdS)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 /$(   $$&&&&&FcjdSddg}|s|dtj|\}}t j|}|dkrt |d|d}t_tfdtD}|D] }|d } | d vrd } |d } t} t|d | d<t|d|| d<d|vrt|d|| d<t|d| d<d|vrt|d| d<dt|di| 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--bytesrmsgdatac3LK|]}j|VdS)N)rget_name).0uidrs r z+LveCtlPackage._load_info..9s3RRt~66s;;RRRRRRrRESELLER)zN/ArootIDSPEEDspeedVMEMvmemPMEMpmemEPepNPROCnprocallIOioIOPSiopsprovider)rF)packager/limits enabledLimits) rappendrr jsonloadsrlistsetrdictintr)rhuman_readable_numbers lvectl_cmdret_codelvectl_data_str loaded_json json_dataactive_resellers package_data reseller_name package_namepackage_limitsr3package_result_dicts` r _load_infozLveCtlPackage._load_info#s1  # / F((3 % )   i ( ( ($01CZ$P$P!/j11 q==!+e"455 5' #'66 RRRRxzzRRRRR%" A" AL(4M'' & '-L!VVN&),w*?&@&@N7 #%MV$&&&N6 "%%)Q (***v&$'|D'9#:#:N4 ,&&*-l7.C*D*Dw'$)3|D/A+B+B#CN4 %%),\&-A)B)Bv&\)) % -1A A ')(!. ##   $ + +,? @ @ @ @E" A" Arc|||s|jSt}|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;r/r1)rGrr7r4)rreseller_name_argpackage_name_argr; out_data_listrBs rget_reseller_package_limitsz)LveCtlPackage.get_reseller_package_limits^s$ /EFFF  ,+ +  4 7 7LJ'+<<<#7#I.2BBB%,,\:::"((666rc"d|||rd|zndddS)Nz3%(what)s set error for package=%(package)s%(error)sz [%s]r0)whatr1error)messagecontext)rparamrDerrs r __set_errorzLveCtlPackage.__set_errors8P$)l69%AWs]]rCCDD Drc|sdSd|g}|dkr|d|z|D]?\}}|dkr|rd|z}|d|d|@t|j|d \}}} |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 Nzpackage-set-extrz --reseller=%sr!z%s%%z--=TrLimits)r4itemsisdigitrr r_LveCtlPackage__set_error) rrCrD limits_to_setr< limit_name limit_valuer= lvectl_stdout lvectl_stderrs rset_reseller_package_limitsz)LveCtlPackage.set_reseller_package_limitss  F(6 F " "   o = > > >'4':':'<'< E E #J W$$ (;(;(=(=$${2    :::{{C D D D D1=d>PR\^b1c1c.- q==M=!$"2"28\="Y"YZZ Z =rN)F)__name__ __module__ __qualname__rrGrLr[rarRrrr r sw ' ' '9A9A9A9Av""""HDDD [[[[[rr ) __future__rr5lveapir lvectllibr cllimits.librcllimits.lib.utilsrcllimitsrobjectr rRrrrls'&&&&& %%%%%%GGGGGG$$$$$$O[O[O[O[O[FO[O[O[O[O[r