5/9eF2ddlmZddlmZddlZddlZddlmZddlmZddl m Z m Z ddl m Z mZmZdd lmZdd lmZdd lmZdd lmZmZmZdd lmZddlmZmZGddeZ dS))print_function)absolute_importN) iteritems)CloudlinuxLicenseLib)print_dictionaryreplace_params) ClQuotaLibQuotaDisabledExceptionClQuotaException)parse_cloudlinux_packages_opts) LveCtlPackage)LvectlException)DEFAULT_PACKAGEis_active_reseller_limitslve)is_admin) MySQLGovernorMySQLGovExceptioncFeZdZdZdZdZdZdZdZdZ dd Z dd Z d S)CloudlinuxPackagesz4 Class for run cloudlinux-packages commands cd|_t|_t|_t |_gd|_t|_ dS)NF) speednprocpmemvmem maxEntryProcsioiopsinodes mysql-cpumysql-io) _is_jsondict_optsr_lvectl_pack_libr _clquota_pack_lib _LIMITS_KEYSr_mysql_governor)selfs py/clpackages/packages.py__init__zCloudlinuxPackages.__init__#sR VV -!+666,ct}|sd|_|ddiSd|v|_|||_|jdr*tjs|ddi|jdr| S| S)z$ Run command action TresultzCloudlinux license isn't validz--json--for-resellerzLerror: reseller limits are not supported, can not use --for-reseller option.set) rget_license_statusr#_error_and_exit _parse_argsr%getrreseller_limit_supported_set_run_get_run)r*argvlicences r+runzCloudlinuxPackages.run,s'(())++ V DM''3S(TUU U D( %%d++ :>>* + + C4P4R4R   h"    :e  #==?? "==?? "r-c~t||j\}}|s"|t||S)z% Parse CLI arguments )r r#r3r)r*r9statusdatas r+r4zCloudlinuxPackages._parse_argsAsB6dDMJJ  7  !5!5 6 6 6 r-c |j}t|dtr|ddndt fd|jD}t }|jd}d}|jd2|jdd} |j |||jd}nE#t$r8}| t |j |j Yd}~nd}~wwxYw|d r0|js"d |d <t |d <d|d d <n|js"d |d <t |d <d|d d <n |j |}no#t"$r:}i}t |d <t||d d <d |d <Yd}~n0d}~wt$$r }i}|j |d<|j |d<Yd}~nd}~wwxYw|D],} | d} | t&krd} | |vr|| | dd <-g} |D]6} d| ddi| dd<| | d7|jrd|d< |jd|jd| vr}|j|jd} |D]U} | d}|t&krd}|| vr:| |d| ddd<| |d| ddd<VnZ#t0$rH}|ddkr2d |d<d |vr)t |d <t||d d<Yd}~n d}~wwxYwd|d<|D]} | d} |ds| d=| dd=| dikr| d=|ds| d=|dsd| vr| d=|ds| d =|d!sd!| vr| d!=|ds| dd=| dikr| d=|d"sd"| vr| d"=|d#s"d| dvr| dd=| dikr| d=|d$s&d| vr"d| dvr| dd=| dikr| d=t3||d%<||d<||d&S)'z# Run 'get' command z--limits,Nc3*K|] }| p|vfVdS)N).0klks r+ z.CloudlinuxPackages._get_run..Rs3MMaA2v0b1MMMMMMr- --provider --packageunicode-escapez--human-readable-numbersr/contextr errorquotaerrorsz'LVE Manager/quota package not installedz#Quotas not activated on this systemwarningrKpackagedefaultlimitsallrcpuenabledmySqlGovmysqlrdisabledrrreprrr!r"itemsr)r% isinstancestrsplitr$r(encodedecoder&get_reseller_package_limitsrr3messagerKr'is_clquota_presentis_clquota_activatedr r rappendr)is_governor_presentget_package_limitsrlen _print_data)r*o limits_keysr/ reseller_name package_name packages_datae quotas_dict package_datapackage_name_quota package_namespackage_limits_governor limits_dictrEs @r+r8zCloudlinuxPackages._get_runKsK J)3AjM3)G)G QQz]  % % %TMMMM4;LMMMMM  <0  :k " .:k299;;BBCSTTL L 1MMmNZNRjYsNtvvMM L L L  QY !J!J!J K K K K K K K K L x  [)<<>> [")w#'66x ,Ux ))+@@BB [")w#'66x ,Qx )) 2"&"8"T"TUa"b"bKK-..."$K'+vvF8$03AF8$W-&-F7OOOOOO'222"$K() F9%() F9%%%%%%2%2[[L)5i)@&)_<<-6*)[88;FGY;Z X.x8 ) : :L-2L4J74S,TL "5 )  i!8 9 9 9 9   3 3 5 5 ,!*F:  >:k*2dj6MQ^6^6^.2.B.U.UVZV`alVm.n.n+(5pp '3I'> '?::+4L'+BBBE\]iEjkpEqL259'BD[\hDijnDoL248A$ > > >*%22)0F:&v--+/66x(7:1vvx(4  >",F: )% *% *L&x0Kw' +(&u-u%++#E*v& ('v& (6[+@+@'/ &%w' )G{,B,B(t$ *%e,t$**#D)v& (6[+@+@'{+ +;u;M0M0M&w/u%++#E*z* *t{/B/BwR]^bRcGcGc%g.t$**#D)m,,w)y    qsU>'C&& D(0.D##D(+G H20H H2H--H2>BM N*">N%%N*c |jd}|jd}|8t|s)t|s|dd|id|jdd}t}|j}t|d |d |d |d |d |d|dgr|d |d |d|d |d |d |dd}| |||tdt|D} |j |||nE#t$r8}|t|j|jYd}~nd}~wwxYw|drh |j ||dnE#t"$r8}|t|j|jYd}~nd}~wwxYw|d|d|jrp |j||d|dnF#t*f$r8}|t|j|jYd}~nd}~wwxYw||dS)z# Run 'set' command rGr0Nz5error: reseller limits for %(reseller)s are disabled.resellerrJrHrIz--speedz--pmemz--vmemz--maxEntryProcsz--nprocz--ioz--iops)rrrrrrrc"g|] }|d | Sr rB)rCxs r+ z/CloudlinuxPackages._set_run..s!LLL1Q4;K1;K;K;Kr-z--inodesz --mysql-cpuz --mysql-ior)r%r5rrr3r^r_r$any%_check_hoster_permissions_for_packagerr&set_reseller_package_limitsrrarKr'r r)reset_package_limitsrrh)r*rk for_resellerrlr/rirRrns r+r7zCloudlinuxPackages._set_runsG <0 z~~&677  #H\,B,B #(66 $  Q& 6""    z+.5577>>?OPP  J ) ak1X;:K8L) ai86 7 7 P !|Qx[& kA>O>Kch|-t|r d}||d|iddSdSdS)NzMerror: hoster cannot manage package limits for reseller's package %(package)srPrJ)rr3)r*rrlrkras r+r|z8CloudlinuxPackages._check_hoster_permissions_for_packagesh  $=m$L$L =G  G.7-F"H"H I I I I I   r-Fsuccessct|tr)||tjdt ||jp|dS)z Output data wrapper :param: `dict` data - data for output to stdout :param: `bool` force_json - always output json format )r/ timestampN)r[r$updatetimerr#)r*r> force_jsonr/s r+rhzCloudlinuxPackages._print_datasT dD ! ! F KK6 DD E E Et}: ;;;;;r-r c|jr9|dtjit|dnu t t |d|dizn:#t$r-}t dt |d|dYd}~nd}~wwxYwtj |dS) z Print error and exit :param dict message: Dictionary with keys "result" as string and optional "context" as dict rTr/rKzError: z []N) r#rrrprintr\r5KeyErrorsysexit)r*ra error_coderns r+r3z"CloudlinuxPackages._error_and_exits = < NNK5 6 6 6 Wd + + + + <c'(+,,w{{9b/I/IIJJJJ < < <#a&&&&''':;;;;;;;; < s9A<< B3#B..B3N)Frrx) __name__ __module__ __qualname____doc__r,r;r4r8r7r|rhr3rBr-r+rrs///###*B...`III<<<<      r-r)! __future__rrrr future.utilsr cllicenser cli_utilsrrcllimits.clquota_libr r r cl_packages_arg_parser clpackagesrcllimitsr lvectllibrrrclcommon.cpapir clcommon.librrobjectrrBr-r+rsi&%%%%%&&&&&& """"""******66666666UUUUUUUUUUAAAAAA$$$$$$$$$$$$          $#####99999999||||||||||r-