§ Rl¾jˆ*ãóÖ—ddlZddlZddlmZddlmZddlmZmZm Z m Z m Z m Z m Z Gd„de¦«ZdZed zZd d d d dœZdddddddœZdddddœZdddœZdddœZd#d „Zd$d!„Zd$d"„ZdS)%éN)ÚFormattedException)Ú mod_makedirsé)Úboolean_to_yes_noÚis_positive_intÚmin_num_notify_converterÚ repack_dictÚstr_to_booleanÚtime_convertor_to_dictÚtime_unit_to_lettercó—eZdZdS)ÚLveStats2ExceptionN)Ú__name__Ú __module__Ú __qualname__©óúN/opt/cloudlinux/venv/lib64/python3.11/site-packages/clconfig/lve_stats2_lib.pyrrs€€€€€Ø€Drrz/etc/sysconfig/lvestats.configz/StatsNotifier.cfgÚ notifyAdminÚnotifyResellersÚnotifyCustomersÚnotifyResellerCustomers)Ú NOTIFY_ADMINÚNOTIFY_RESELLERÚNOTIFY_CUSTOMERÚ NOTIFY_INCLUDE_RESELLER_CUSTOMERÚmemÚiopsÚnprocÚioÚconcurrentConnectionsÚcpu)Ú NOTIFY_MEMORYÚ NOTIFY_IOPSÚ NOTIFY_NPROCÚ NOTIFY_IOÚ NOTIFY_EPÚ NOTIFY_CPUÚnotifyFromEmailÚreportAdminMailÚ notifySubjectÚ notifyCharset)ÚNOTIFY_FROM_EMAILÚREPORT_ADMIN_EMAILÚNOTIFY_FROM_SUBJECTÚNOTIFY_CHARSET_EMAILÚuserÚadmin)ÚNOTIFY_MIN_FAULTS_USERÚNOTIFY_MIN_FAULTS_ADMIN)ÚNOTIFY_INTERVAL_ADMINÚNOTIFY_INTERVAL_USERÚrcó&—t||d¬¦«S)Núutf-8)ÚmodeÚencoding)Úopen)Ú file_namer:s rÚ_openr>;s€Ý �  ¨wÐ 7Ñ 7Ô 7Ð7rcó^—t}tj |¦«siS t |¦«}| ¦«}| ¦«n>#ttf$r*}tdt|¦«zd|idœ¦«|‚d}~wwxYwi}|D]_}|  d¦«s|  ¦«dkrŒ0|  d¦«\}}|  ¦«||<Œ`t} t} t } t"} t%| |t&¦«} t%| |t&¦«}t%| |t(d¬ ¦«}t%| |t*¦«}t%t,|td¬ ¦«}|| d <|| d <|| d <|| d <d| iS)a Retrieves lve-stats2 notifications parameters :param str reseller: reseller name, if we want notifications parameters for a reseller :return: dict. For example: {'faultsNotification': {'notifyResellerCustomers': True, 'notifyResellers': True, 'minimumNumberOfFaultsToNotify': {'admin': 0, 'user': 0}, 'notifyAdmin': True, 'notify': {'admin': {'unitOfTime': 'hours', 'period': 12}, 'user': {'unitOfTime': 'hours', 'period': 12} }, 'faultsToInclude': {'mem': True, 'iops': False, 'io': False, 'nproc': False, 'concurrentConnections': False, 'cpu': True}, 'notifyCustomers': False } } ú%(lvestats_cfg)s read error: Ú lvestats_cfg©ÚmessageÚcontextNú#Úú=r)ÚdefaultÚfaultsToIncludeÚminimumNumberOfFaultsToNotifyÚnotifyÚemailÚfaultsNotification)ÚStatsNotifierConfigÚosÚpathÚexistsr>Ú readlinesÚcloseÚIOErrorÚOSErrorrÚstrÚ startswithÚstripÚsplitÚ notify_dictÚ faults_dictÚnumber_notify_dictÚnotify_time_dictr r rr Úemail_notify_dict)ÚresellerÚ config_pathÚfÚconfigÚeÚ config_dictÚlineÚkeyÚvalueÚnotify_dÚfaults_dÚnumber_notify_dÚ notify_time_dÚfaults_notification_dictÚfaults_include_dictÚmin_num_notifyÚ period_notifyÚemail_settingss rÚget_notificationrq?sЀõ&&€KÝ Œ7�>Š>˜+Ñ &Ô &ðØˆ ðTÝ �+Ñ Ô ˆØ—’‘”ˆØ �Љ Œ ˆ ˆ øÝ •WÐ ðTðTðTÝ Ð-LÍsÐSTÉvÌvÑ-UØ.<¸kÐ-Jð"Lð"LñMôMØRSð TøøøøðTøøøð€KØð)ð)ˆà �?Š?˜3Ñ Ô ð  4§:¢:¡<¤<°2Ò#5Ð#5Ø Ø—Z’Z ‘_”_‰ ˆˆUØ Ÿ;š;™=œ=ˆ �CÑÐå€HÝ€HÝ(€OÝ$€Må*¨8°[Å.ÑQÔQÐÝ% h° ½^ÑLÔLÐÝ  °+Õ?WÐabÐcÑcÔc€NÝ  ¨{Õ#t$t0f$r*}td3t|¦«zd|idœ¦«|‚d}~wwxYw| ¦«D]\}} |  |›d2| ›�¦«Œ d5„}t5t7|| ¦«¦«} t9|dd6¬7¦«5}| d8 | ¦«¦«ddd¦«n #1swxYwYn>#ttf$r*}td9t|¦«zd|idœ¦«|‚d}~wwxYwt?j d:d;d¦«dS)?aÖ Sets lve-stats2 notifications parameters :param parameters_dict: Parametres to set. For example: {u'notifyResellers': True, u'faultsToInclude': {u'mem': True, u'iops': False, u'io': False, u'nproc': False, u'concurrentConnections': False, u'cpu': True}, u'minimumNumberOfFaultsToNotify': {u'admin': 0, u'user': 0}, u'notifyAdmin': True, u'notify': {u'admin': {u'unitOfTime': u'hours', u'period': 12}, u'user': {u'unitOfTime': u'hours', u'period': 12} }, u'notifyResellerCustomers': True, u'notifyCustomers': False } :param str reseller: either reseller name or None rNiíÚwcó6—g|]}| ¦«‘ŒSr©rX©Ú.0res rú z$set_notification..œs €Ð?Ð?Ð?¨˜Ÿ š ™ œ Ð?Ð?Ð?rr@rArBcó —t|¦«S©N©r©Úxs rúz"set_notification..¤s€Õ2CÀAÑ2FÔ2F€rzfaultsToInclude/cpucó —t|¦«Srzr{r|s rr~z"set_notification..¥s€Õ4EÀaÑ4HÔ4H€rzfaultsToInclude/nproccó —t|¦«Srzr{r|s rr~z"set_notification..¦ó€Õ1BÀ1Ñ1EÔ1E€rzfaultsToInclude/iocó —t|¦«Srzr{r|s rr~z"set_notification..§s€Õ5FÀqÑ5IÔ5I€rzfaultsToInclude/memcó —t|¦«Srzr{r|s rr~z"set_notification..¨r�rz%faultsToInclude/concurrentConnectionscó —t|¦«Srzr{r|s rr~z"set_notification..©s€Õ3DÀQÑ3GÔ3G€rzfaultsToInclude/iops)r(r%r&r#r'r$cóB—t|¦«›t|¦«›�Srz©rr ©r}Úys rr~z"set_notification..¬s#€µ/À!Ñ2DÔ2DÐ/^ÕFYÐZ[ÑF\ÔF\Ð/^Ð/^€rznotify/admin/periodznotify/admin/unitOfTimecóB—t|¦«›t|¦«›�Srzr†r‡s rr~z"set_notification..¯s#€µÀÑ1CÔ1CÐ.]ÕEXÐYZÑE[ÔE[Ð.]Ð.]€rznotify/user/periodznotify/user/unitOfTimecó —t|¦«Srzr{r|s rr~z"set_notification..²s€Õ#4°QÑ#7Ô#7€rrcó —t|¦«Srzr{r|s rr~z"set_notification..³ó€Õ&7¸Ñ&:Ô&:€rrcó —t|¦«Srzr{r|s rr~z"set_notification..´rŒrrcó —t|¦«Srzr{r|s rr~z"set_notification..µs€Õ7HÈÑ7KÔ7K€rrz#minimumNumberOfFaultsToNotify/adminz"minimumNumberOfFaultsToNotify/user)r5r6rrrrr4r3zemail/notifyFromEmailzemail/notifySubjectzemail/reportAdminMailzemail/notifyCharset)r-r/r.r0cóž•—| d¦«} ‰}|D] }||}Œ n%#t$r‰d}|D] }||}Œ YnwxYw|S)Nú/rM)rYÚKeyError)rPÚ path_partsÚpointÚpartÚnotifier_paramsÚparameters_dicts €€rÚget_val_by_pathz)set_notification..get_val_by_pathÃsŒø€Ø—Z’Z ‘_”_ˆ ð $Ø#ˆEØ"ð $ð $�ؘdœ ��ð $øåð $ð $ð $Ø#Ð$8Ô9ˆEØ"ð $ð $�ؘdœ ��ð $ð $ð $øøøðˆ s˜(¨A Á A c3ó.•K—|]}‰|¦«V—ŒdSrzr)rwr}r—s €rú z#set_notification..Ôs-øèè€Ð*OÐ*OÀ!¨?¨?¸1Ñ+=Ô+=Ð*OÐ*OÐ*OÐ*OÐ*OÐ*Orrcó6—g|]}| ¦«‘ŒSrrurvs rrxz$set_notification..Ùs €Ð=Ð=Ð=¨�t—z’z‘|”|Ð=Ð=Ð=rrErFrGz%(lvestats_cfg)s format error: z: cóœ—| d¦«s| ¦«dkrdS| d¦«\}}|dkS)NrErFTrGÚNone)rWrXrY)Ú_lineÚ_Ú_values rÚfilter_config_linesz-set_notification..filter_config_linesósO€Ø × Ò ˜CÑ Ô ð  E§K¢K¡M¤M°RÒ$7Ð$7Ø�4Ø—K’K Ñ$Ô$‰ ˆˆ6ؘÒÐrr9)r;ú z%(lvestats_cfg)s write error: z+/sbin/service lvestats reload &>/dev/null &Tz /bin/bashF)ÚshellÚ executableÚcheck)!rOrPrQrNÚlenrqÚdirnamerr>rSrRrTrUrrVÚupdateÚitemsÚ isinstancer‘Ú enumeraterWrXrYÚ ValueErrorÚ IndexErrorÚappendÚlistÚfilterr<Ú writelinesÚjoinÚ subprocessÚrun)r–r_r`raÚ config_linesrcÚfaults_config_mapÚ new_configrfÚvalÚconfig_to_writeÚidxrergr r—r•s` @@rÚset_notificationrºxsIøøø€õ& Œ7�>Š>Õ-Ñ .Ô .ðµ#°oÑ2FÔ2FÈ!Ò2KÐ2K؈à€Oå%€KÝ&Ñ(Ô(€Oõ Œ7�>Š>�"œ'Ÿ/š/¨+Ñ6Ô6Ñ 7Ô 7ð:Ý•R”W—_’_ [Ñ1Ô1°5Ñ9Ô9Ð9Ý Œ7�>Š>˜+Ñ &Ô &ð(Ý ˆk˜3ÑÔ×%Ò%Ñ'Ô'Ð'ð\Ý �+Ñ Ô ˆØ?Ð?°·²±´Ð?Ñ?Ô?ˆ Ø �Љ Œ ˆ ˆ øÝ •WÐ ð\ð\ð\Ý Ð-LÍsÐSTÉvÌvÑ-UØ.<Õ>QÐ-Rð"Tð"TñUôUØZ[ð \øøøøð\øøøð )GÐ(FÐH]Ð'^Ø*HÐ*HÐJaÐ)bØ'EÐ'EÐG[Ð&\Ø+IÐ+IÐK`Ð*aØ'EÐ'EÐGnÐ&oØ)GÐ)GÐI_Ð(`ð bðbÐð×ÒØ"^Ð"^Ø"7Ø";ð"=ð"^Ð!]Ø"6Ø":ð!<ð8Ð7¸ÐGØ:Ð:ÐÐ=° Ð=Ñ=Ô=€OðTÝ" <Ñ0Ô0ð $ð $‰IˆC�à�Š˜sÑ#Ô#ð  t§z¢z¡|¤|°rÒ'9Ð'9Øð FØ!ŸZšZ¨™_œ_‘ ��U�UøÝð Fð Fð FÝ(Ø@ÀcÈAÁgÐCWÐCWÐQUÐCWÐCWÑWØ .° Ð<ð*>ð*>ñ?ô?àDEðFøøøøð Føøøð�jÐ Ð à*-Ð'AÐ'A° ¸3´Ð'AÐ'A� Ñ$à˜s�Oøð $øõ •jÐ !ðTðTðTÝ Ð-NÕQTÐUVÑQWÔQWÑ-WØ.<¸kÐ-Jð"Lð"LñMôMØRSð TøøøøðTøøøð!×&Ò&Ñ(Ô(ð1ð1‰ ˆˆUØ×Ò #Ð/Ð/¨Ð/Ð/Ñ0Ô0Ð0Ð0ð ð ð õ �6Ð"5°ÑGÔGÑHÔH€OðTÝ �+˜s¨WÐ 5Ñ 5Ô 5ð 5¸Ø �LŠL˜Ÿš ?Ñ3Ô3Ñ 4Ô 4Ð 4ð 5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5øøå •WÐ ðTðTðTÝ Ð-MÕPSÐTUÑPVÔPVÑ-VØ.<¸kÐ-Jð"Lð"LñMôMØRSð TøøøøðTøøøõ „NÐ@ب+¸UðDñDôDðDðDðDs¥Ã?AEÅFÅ*E<Å<FÈ AIÉ I!É I!É1ALÊ4K Ë LË K<Ë K7Ë7K<Ë<LÌMÌ)%MÍMÎ+O>Î=)O2Ï& O>Ï2O6Ï6O>Ï9O6Ï:O>Ï>P9Ð%P4Ð4P9)r7rz)rOr²Úclcommon.clexceptionrÚclcommon.utilsrÚclconfig_utilsrrrr r r r rÚStatsNotifierDirrNrZr[r^r\r]r>rqrºrrrúr¿s«ðð € € € ØÐÐÐà3Ð3Ð3Ð3Ð3Ð3Ø'Ð'Ð'Ð'Ð'Ð'ððððððððððððððððððð ð ð ð ð Ð+ñ ô ð ð4ÐØ&Ð)=Ñ=Ðà,Ø"3Ø"3Ø3LðNðN€ ð !&Ø$Ø&Ø Ø3Ø"ð $ð$€ ð+<Ø+<Ø,;Ø-<ð>ð>Ðð 17Ø18ð:ð:Ðð.5Ø,2ð4ð4Ðð 8ð8ð8ð8ð6<ð6<ð6<ð6<ðrMDðMDðMDðMDðMDðMDr