g[dddlZddlmZddlmZddlmZddlmZddl m Z GddZ dS) N)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 /$(   $$&&&&&FcLjdSddg}|s|dtj|\}}t j|}|dkrt |d|d}g_tfdtD}|D]}|d } | d vrd } |d } i} 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) r appendrr jsonloadsrsetrintr)rhuman_readable_numbers lvectl_cmdret_codelvectl_data_str loaded_json json_dataactive_resellers package_data reseller_name package_namepackage_limitsr2package_result_dicts` r _load_infozLveCtlPackage._load_info#s)  # / F((3 % )   i ( ( ($01CZ$P$P!/j11 q==!+e"455 5' #% RRRRxzzRRRRR%" A" AL(4M'' & '-LN&),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|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 } } )r8r.r0)rDr r3)rreseller_name_argpackage_name_argr8 out_data_listr?s rget_reseller_package_limitsz)LveCtlPackage.get_reseller_package_limits^s$ /EFFF  ,+ +  4 7 7LJ'+<<<#7#I.2BBB%,,\:::"((666rc$d|||rd|dndddS)Nz3%(what)s set error for package=%(package)s%(error)sz []r/)whatr0error)messagecontext)rparamrAerrs r __set_errorzLveCtlPackage.__set_errors<P$)l47%?[#[[[[RAABB Brc|sdSd|g}|dkr|d||D]?\}}|dkr|r|d}|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=r %z--=TrLimits)r3itemsisdigitrr r_LveCtlPackage__set_error) rr@rA limits_to_setr9 limit_name limit_valuer: lvectl_stdout lvectl_stderrs rset_reseller_package_limitsz)LveCtlPackage.set_reseller_package_limitss  F(6 F " "   ;M;; < < <'4':':'<'< ? ? #J W$$)<)<)>)>$!,///   =:== == > > > >1=d>PR\^b1c1c.- q==M=!$"2"28\="Y"YZZ Z =rN)F)__name__ __module__ __qualname__rrDrIrZr`rPrrr r sw ' ' '9A9A9A9Av""""HBBB [[[[[rr ) r4lveapir lvectllibr cllimits.librcllimits.lib.utilsrcllimitsrr rPrrris %%%%%%GGGGGG$$$$$$O[O[O[O[O[O[O[O[O[O[r