From 16fd5af2898addbc1425592600855892bb753dfa Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Sun, 12 Sep 2021 18:16:34 +0200 Subject: [PATCH] update project --- agent_based/checkpoint_asg_interface.py | 85 +++++++++---------- checkpoint_asg_interface.mkp | Bin 4271 -> 4364 bytes packages/checkpoint_asg_interface | 9 +- web/plugins/wato/checkpoint_asg_interface.py | 55 ++++++++++++ 4 files changed, 98 insertions(+), 51 deletions(-) create mode 100644 web/plugins/wato/checkpoint_asg_interface.py diff --git a/agent_based/checkpoint_asg_interface.py b/agent_based/checkpoint_asg_interface.py index e5b5421..732f4b1 100644 --- a/agent_based/checkpoint_asg_interface.py +++ b/agent_based/checkpoint_asg_interface.py @@ -11,6 +11,7 @@ # # 2021-03-03: rewrite for CMK 2.0 # 2021-09-10: changed render function to networkbandwidth +# 2021-09-11: added WTO options # # sample snmpwalk (for one interface) # .1.3.6.1.4.1.2620.1.48.26.1.1.1.4.0 = Gauge32: 4 @@ -47,7 +48,7 @@ import time -from typing import Mapping, Dict, List, Tuple, NamedTuple +from typing import Dict, List, NamedTuple from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( DiscoveryResult, @@ -111,26 +112,6 @@ def parse_checkpoint_asg_interface(string_table: List[StringTable]) -> Dict[str, def discovery_checkpoint_asg_interface(section: Dict[str, CheckPointASGInterface]) -> DiscoveryResult: - # sample section - # - # { - # 'bond2': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=3373103274, asgNetIfTx=5007776301), - # 'eth1-05': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1014183605, asgNetIfTx=3291515315), - # 'eth2-05': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=2358951560, asgNetIfTx=1716293763), - # 'bond2.602': CheckPointASGInterface(asgNetIfIPv4Addr='10.9.9.1/25', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=355320533, asgNetIfTx=4673143507), - # 'bond2.3001': CheckPointASGInterface(asgNetIfIPv4Addr='10.0.100.49/27', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=2910413426, asgNetIfTx=229216384), - # 'bond3': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=1479928728, asgNetIfTx=133617791), - # 'eth1-06': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=214459394, asgNetIfTx=131774843), - # 'eth2-06': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1265469477, asgNetIfTx=1843158), - # 'bond3.998': CheckPointASGInterface(asgNetIfIPv4Addr='xx.yy.zz.129/28', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1470381718, asgNetIfTx=124676073), - # 'magg1': CheckPointASGInterface(asgNetIfIPv4Addr='10.0.100.9/27', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=200631796, asgNetIfTx=384654797), - # 'eth1-Mgmt1': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond slave', asgNetIfState='(Up)/(Up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=61520991, asgNetIfTx=44776128), - # 'eth2-Mgmt1': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond slave', asgNetIfState='(Up)/(Up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=139110651, asgNetIfTx=339878254), - # 'Sync': CheckPointASGInterface(asgNetIfIPv4Addr='192.0.2.1/24', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=24549684703, asgNetIfTx=14214325659), - # 'eth1-Sync': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond slave', asgNetIfState='(down)/(down)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1228171, asgNetIfTx=1511513), - # 'eth2-Sync': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=24548432877, asgNetIfTx=14212801896) - # } - # for item in section.keys(): yield Service(item=item, parameters={'asgNetIfSpeed': section[item].asgNetIfSpeed}) @@ -147,47 +128,53 @@ def check_checkpoint_asg_interface(item, params, section: Dict[str, CheckPointAS now = time.time() value_store = get_value_store() - try: - in_rate = get_rate(value_store, 'in', now, asg_interface.asgNetIfRx, raise_overflow=True, ) - except GetRateError as exc: - yield IgnoreResults(str(exc)) - else: - yield from check_levels(in_rate, metric_name='if_in_octets', render_func=render.networkbandwidth, label='In', ) - - out_rate = get_rate(value_store, 'out', now, asg_interface.asgNetIfTx, raise_overflow=True, ) - yield from check_levels(out_rate, metric_name='if_out_octets', render_func=render.networkbandwidth, label='Out', ) + for label, metric, value in [ + ('In', 'if_in_octets', asg_interface.asgNetIfRx), + ('Out', 'if_out_octets', asg_interface.asgNetIfTx), + ]: + try: + value = get_rate(value_store, label, now, value, raise_overflow=True, ) + except GetRateError as exc: + yield IgnoreResults(str(exc)) + else: + yield from check_levels(value, metric_name=metric, render_func=render.networkbandwidth, label=label, ) details = '' - details += '\nIPv4 Address: %s' % asg_interface.asgNetIfIPv4Addr - details += '\nIPv6 Address: %s' % asg_interface.asgNetIfIPv6Addr - details += '\nMAC Address: %s' % asg_interface.asgNetIfMACAddr - details += '\nType: %s' % asg_interface.asgNetIfInfo - details += '\nMTU: %s' % asg_interface.asgNetIfMTU - details += '\nDuplex: %s' % asg_interface.asgNetIfDuplex + details += f'\nIPv4 Address: {asg_interface.asgNetIfIPv4Addr}' + details += f'\nIPv6 Address: {asg_interface.asgNetIfIPv6Addr}' + details += f'\nMAC Address: {asg_interface.asgNetIfMACAddr}' + details += f'\nType: {asg_interface.asgNetIfInfo}' + details += f'\nMTU: {asg_interface.asgNetIfMTU}' + details += f'\nDuplex: {asg_interface.asgNetIfDuplex}' if not asg_interface.asgNetIfIPv4Addr == '-': - summary = 'IPv4: %s' % asg_interface.asgNetIfIPv4Addr + summary = f'IPv4: {asg_interface.asgNetIfIPv4Addr}' else: summary = 'IPv4: N/A' yield Result(state=State.OK, summary=summary, details=details) - yield_text = 'State: %s' % asg_interface.asgNetIfState + yield_text = f'State: {asg_interface.asgNetIfState}' if not asg_interface.asgNetIfState.lower() == '(up)/(up)': - yield Result(state=State.CRIT, summary=yield_text) + yield Result(state=State(params['state_not_up_up']), summary=yield_text) else: yield Result(state=State.OK, summary=yield_text) if not asg_interface.asgNetIfSpeed == inv_asgNetIfSpeed: - yield Result(state=State.WARN, - summary='Speed: %s (%s expected)' % (asg_interface.asgNetIfSpeed, inv_asgNetIfSpeed)) + yield Result( + state=State(params['state_speed_changed']), + summary=f'Speed: {asg_interface.asgNetIfSpeed} ({inv_asgNetIfSpeed} expected)' + ) elif not asg_interface.asgNetIfSpeed == 'NA': - yield Result(state=State.OK, summary='Speed %s' % asg_interface.asgNetIfSpeed) + yield Result(state=State.OK, summary=f'Speed {asg_interface.asgNetIfSpeed}') - if not asg_interface.asgNetIfDuplex.lower(): - yield Result(state=State.CRIT, summary='Duplex: %s (Full expected)' % asg_interface.asgNetIfDuplex) + if not asg_interface.asgNetIfDuplex.lower() == 'full': + yield Result( + state=State(params['state_not_full_duplex']), + summary=f'Duplex: {asg_interface.asgNetIfDuplex} (Full expected)' + ) else: - yield Result(state=State.OK, summary='Duplex: %s' % asg_interface.asgNetIfDuplex) + yield Result(state=State.OK, summary=f'Duplex: {asg_interface.asgNetIfDuplex}') register.snmp_section( @@ -225,6 +212,10 @@ register.check_plugin( service_name='ASG Interface %s', discovery_function=discovery_checkpoint_asg_interface, check_function=check_checkpoint_asg_interface, - check_default_parameters={}, + check_default_parameters={ + 'state_not_full_duplex': 2, + 'state_not_up_up': 2, + 'state_speed_changed': 1, + }, check_ruleset_name='checkpoint_asg_interface', -) \ No newline at end of file +) diff --git a/checkpoint_asg_interface.mkp b/checkpoint_asg_interface.mkp index 8f761411c1f27b9b1ca53ae97818f0d6943510a6..c51fc3c95c7b473741b087ca78e73bbb6d9c3ef2 100644 GIT binary patch literal 4364 zcmaKrXEYlC!$#F??b>4Ry(wbPQWR0CEitS1p0%mHDMGEHYSbPTdzad^RqRp3EF$E6 z&-efRem(b``}3ZMCGqJ~1dk#V8)N&<-qzW}-O0_z8tUz6{ol3sa)8>}3yF)0i;2pL zi3$6O3X2Q7I(uN9Fgbg#wu=>A3m7;8GtBb#bf)NAwsq?2cxZVtN4v-rQ)4OE;-xgc z;W{mEpNAoZu@tYbxX$(DmaGIRmMjJRXcGyZ%o90m!dQrb$|J3JBFfi`qP~~OPzKG# z7qxXHhxip;Y$({<@aUn}xTPVfuV@5rl(6-EdE#lIZ&=b$?@As@(>38|`jz9I3_RT= znM-5?oea`R?v<O3rtZJB*2`T0fz?YyIA2h7_*RUXJL{3Jk)!+5L^c;QC4woc7uVZ7 z*htBIS)-q!L`PDf2-JeQ*Q;K>B%}363_fS+-_b<AJg69p61h<@mbkD^J1KhFb3}Wm zOf*r(iez%qj=EW+JwZ(<Y0r@{c<(Oj3E)l8>!<*EPdeYthYCfF&9}VwOVCSC?xxnD znvK>3Y{L0+%H#5CirT~I?eA#2Q@mrBlflj9KdMEBh+b1r&BCOO45*Q@QmRRm?Vn9i zCew>&jvo3P+{y7~i}$f5>woi2C+2gkL{kpJC`7jSt6}+dhg?b75?wf5KloVmkndwH zRkd>^&JSgt*^vG6rN+OyOO8|`myg4&^qA72BhIanE7`YX+LqK9Yp%zlxZ5ysR-TXB z812LYs(vMkE>1LthLLh9kS(S?rTjSQZ`?!_3q-~8qMj5f%@fRiJSJpN(GVgcJ`#;J znVv#|;34lFdp7J&6~^P-yEy|$Cv_&DvFFu@1l0@gWZOu+95k_1*HZKSsS$m|t|<n> z0jJ$6F7TYZXB`8j-(#={g)|40Z&BwP&F3AA7(Ju6=NMy%{?q&Je@Ktt;mMs_ZR@X3 z$hz51+*^DHUi3Y>u1Z?ZJx0UxI6os#`{c4PN`&qhpPc#wmn}R;$#$OVmvqFq;1eO) zhjG5V*gDz?0?v5HN(J4ju9yOAI3EceQ(9uRvzH1EKvwatKsUrae=j{av+VO_!%+A! zGYD(;`ja&zL6UW8q{+2V9s&1<WMRonn;ur;C$XRkFy~QZDcxZQC606tMrtf+hyBlr zQ*kGH%b(|Q^-&QhaFS{(Z~M}%>lO4`2D`y|K>(bscH!v<AWB_T@ij%cgk#4AAGFV_ z#Sbkv+gl37&(c}O75p_VSc?<pdh6(?%fu3VhTDU$zc7|&Av0EBwimucpslNY;d`}v zafA&-Ytyw?EX@4MjA{mFFHE;6qNijeRzFsq@LwN7^Zl|l7YT-arVB}ehLzpPt{$Px zh5V^uccO!GS_`!qQW?gV#2Chk6Jw|ElVp_F(#@+2*8_HtD8h9mh>ss`p<#K`itG6N zYK|}Nc`U<nVV(UFd1EIJ*G&aHTe+VE%^|H_cyHdNk%4mBM8;YM9_fb@3FWFpA&_~` zZedl{XB*Ytk5Rw($a3&X4|0}U?gZX7te*G@uJ_v0vEe4uPRp-~Jde7YR9I(^VJla5 z&fXO*z84Pyzs#}C`%vcEEL3KhF@WCm$^~~We$0?#Uq1jaHMvJ<ddW7jvYOieLKW*S z<+f^ZxHj_X?%AP*Zt}kg(j*arpuIOfXBUro%MYg);f6k|^)5{uR=>KPd}=;h=8UYk zmrS<F)<FI5KQt{$1#kUs1ZuXeZk#Pn>U_Cn3bk4C>vX?%<-;3=+_+R9)hd|~4jeb1 zyxuq^G-qIqm^s~56)e1iZ_#%$mZ=dujP(|VMmg!yRY$U;N@o$YtQKt>wI+MpA@mHL zzZ>~pst7Ie4qvOZ_$0Mf-Q1T_F*MJKO;`;{erJt^UX!RHn@Q-M?z`NkTxiY47e|z- zAXlD+eS^F<?wOhd)(r#_D52qoRllCOrp_N+tIyl(?OWweLWh*|-c*jngA9o46e0xC z`^A6r72@i|7sD~%lJ^;QWLlp`y)GV8mOOL-iUt3e!J+NOGelU|?g_nxQe`fg&ziZ? z#OP2c)j?eJ?S_Nh0d0`0Ndz*x>B}i^#H2;(7KHKbQ^}6oa%x%<!YNzFU8kE^{F=k1 za)}%-_cM1kq{0glq|?=HOygkc5JARwPh6WMj|Oedvyza68T1E=tnuW7H8rJ7yx9Y0 zZoaLUM;^}*?$3#!bJO#s${WdF4}bw;bw#TWX!(S%Ap?iD6AM;wa%2iJbs#T<l=)5~ ztfTmx7IE%P6$8qWO&&2Err9`UQYx{<Hv;4Z$dVyU<G8t=&poe$t<3w=QSxtR7F~X) z{d8zon!ef~OTJZqN1ZI<_^Aka;=LFXNUxjqO}6kvmSt+=g!P%jrUU=m#he}L@>80< zvcJCuZ+Pzp98k1cQQvZAHN|VeIBgsPJT^XXXZy0g_VHxftBxl(cd$s>KQG1(Hv)p& zpA0UL?*1W6zR0kkqgGP5^e>o+kkCwJCE?5QF4IXUoqt!n5NmA4u<*{fcADR*$9N$q z5#4G?u^3$a6$#dus*Maa$LmsE4~P-ZagUegP@!`l)r%b<851M1`GYmKW{}q51~q$K zzZtEq3#Z;w&uXaQELnq<wz{blF#WMY#lcJFEISI<JF4p1GE4uo?NMP5`3bm)5DPX+ zshL$~5g5DgEWAIRWK@uBf;;GGrpm-)SD7zctx1X^og{3)(lTqJc9(oHD3t{nc&>2Z zDml7Y4mAq+1$UAUn)jchTUS12dvq%4g@o}&lN23s#YFmRyGh3dRcCt@!5TBzzaVQM zB~%OSA~kL$QxwJ#_(tzf162^cTuvI&SEA+Bxgo`=aR0C0)I4I_@jgrKJeFHpe`rTt z{WT_nQN4R_(xX0PbDtlh9WIpQZ#3v@^Rjy1igiN7qL1iwgv&C*MfHg^HOU5HB&!7u zVG5fhdXC(M=mX6TIH)1kN3OXGsrz+<9WpcuYsF<E49e7A{A#`Rrtb8YGIZMmFqiw= z+#c_}xk8U2CTlQ*s(*}a#qgDR+)pl;J$0sWzuOPP<HEU>@Yi<6W}IH~2maGY$Iy1> z6n5PSUy)i1MuPBwTnpj1bY1h8wne|O1|1?`QwJ}AVpjY~)&LN&<VGwsgR$ZTxoy0d zuq)|M6WDSkON!|y>Q(R$Nk93b2*0CiP`~v@J1|D5w^wIULzyM5@&v3^c6ljGQ)p}A z<JS~U9-0<Ke7Q=W1mW!LbUDEB%SznNv)oOtYojdRE@bjyXVB7E{e?m(1nC8DOz4<2 zS^!05`mmoLnv7?C5ZY(YvnVXoY497a)@L!}TQ_)Y1>q6zx;OROGR}R>9p`(QA&0x$ z0s7emd~T!M^u@4jj5>4bJL$-(CV)0@g)V`fN8t8*=<3AZY@$DFr7dM|jO;ws3)QEY z-83(lhI0CcPLIUw#Bz$1>J#jNd;+<eNqa^Av~F|(`V6xQY7^!vJX-4xU80K5fpT@j z?c!&u>#qWD63vw~k)?b&1x~R|=k9YrAax^sXTbw=7Yi+)7S5-q|Ef?!r-3drUx&<q zCktm$izcK&(c%Ft&HhHVKr~CG^?K|*k8h-%=JugYZYs}gUeGdbJ4mz!`LOl`hak5B ze!oA3R1A6a36ugp1l-L*u(%>4`#JMxi*&r%qo=)1OAcK2EBOMb9mQZ;V0u219$4Hz zd>cnOo6aQO;0`_b>ln5xCz#f{IE8<bUX2wV5yLz;xQBh|Ac%5gdR(i&wiQ8d4;NYW z;K!%S_H?@hv%QS2ZT7}bWlEqfSPQ%O{aN!=r2;*f0CGnecTJ}ZZ5b>x4FTp2kAs31 zqu(m?danO0M=ad_%=_@LNPR~zNygY6*x9QZ9nCGwZ+`+NW*<seC0Y@p%#;?Jt{Je4 zw`=0MaO6(E;B#E)C7V)BboQoSehjos$90GxRd4h3<j>=Syd-BPZ)zcVdG)yJHD0(M zPKUkS!K<Bho7GpdRjde;YEjdRz{XSZ!EDSv3tifq+GxSdy@R!`VD4U?V$i4mHaajy zZMx%I|Byb!UF)sAkGC!6CzuctL?s#ij>5zl^Uy)GvSj$!VnK#c24Yd@V|uRe+inhj z9ekfc+pVun!#%x?PtLno1K*{$(6(>px5RDtF%W&=xj?u!^iKp^SQqtuap_;9*&sHB z0UNeIdRvTC+R^`z0Rl7QSB}zYe-P4Naw}3h*VgPg!VHu!pr{gC#=uPVn&m{Xg^N0{ zOcgfe`VHDubu3a-c~LaquFJ!QLgZ^ribQe=@R7q)jZpQ)1h@9>!qjy?O!&Rsk;a_e zvquWVCjk-eOY$CwtRVvLQUbypY&1fkTFs{gp@~p~Y8J%xa|Xq*lzYCG44lxx^XZKL zOVYu3ae$u|q3O{~sIHzgp#9XlU55BWz^M3`B(cLE`S{!V&j=c01fH8hrI=~7;KF+; z^pe3FY@7NKRzK!A%62<#rW)L5L|*fGw-!;T+0lJo_>Dz^Q7)j*$aY3tC?!(I;1iT< zFa=6((H>hvKKW^sGHiHv($V5N%nWE%EQI{r0_Zq9jqp@Hz}Zmy`rONOo*;mYLmyqw z3gnQX+Rf-o1EgVZ84(<u3)sNVO#Zo6fiux`Z_u^8oO+vz#$a<pZqxk?Dx!~UF!33M z_7@wSteknYKM@+r-`+q-;-S;}JCf0HzXR9wT>h@%GZogn!*xq$Nq2ze>X}53XR-w( z{K0PK-rwz&$CW{nYX!)f9Wm3z%FJM=NKAdaB`t6peRj(cjS?L+QaWr3#HQQ=C~ki& zEA6Ra2VT=%$L!;ed0~g}e;x=7H&?zK-GQ`364H}c4F4ufCOB?+WuqBcuO5fj*1FsR z7IgtvgE~nU;WdI1Ey_nRP#=PF%ujP}6j{ARaCd6|1gqUc*BY>QMCF7RB%`xy9YNvn zrx|P*q*$izonwaub-y@X1@H#$X$ZP0>#s7Bx0$d{jplh$X2ePhT#RUmr>fR}GQaKB zvg!VX)8Sp27R;D{_vIAikh+z9)Xy~`uOF&{ZECLmw4mzU=|@Tz#A=sF!PrzNbS3LH zg^?hHf&D2Cm!W|?7y$6k%0EqiOJ+f`5?@i#O-RLSP^|plL;Wx4YpActWa+rh92ma| zJ95=o$6)w9jz0`<j6Is)gaI^P{=qo4b>bs7nRG2%Fqcw@-J7sI>5B<U{mUe)G^;iV zVaIq^X8~ZX70#f)=jJoWqhcx9xhyQ`bI4Gk?!^VeSx;b)`xLJic5LV1U^V=XaxjzD zjp{pL|Lhzra=Kw0I}XM;>uO-_(Z=`mu9{Xvc&I`Z&ZAP1GUW92%>vaOwm&5Mu3o^? zgPD`U{}NG7d1qSYS&_W%Z!j7xx<k!m8gsdA({Tituhd!dF_-mPTJlV(3Nfkq)-^ob zAPZUvmXS1v(S_`vd90E1G|y2sp(m;Yn>%9Ot2|Is>{7&WG-wrBXG9dhi$`@KuJtZp z3IKy+vsLZhVs+Es-))O|O@UC?amUH-hT&mDsXdK~w>zO~wF;UR?k@&vli_y`l~{KQ z9Kli^t2-k})k4NPWTMP-E8ebgmfIoDySHDxQ_z#b>MYC*)Sz$Wl=`%`a4uI9{}OFl zI=6V*0b0EDg6#S{q##e71S=$Ni)$=E@Y0gb5Iiq>8qajeZuCv?g|s-?D4F*K#yj7E hh-@-puI#9}^nVBae_H>a3Q@WhA)rCYVHIOx{RfjZbBX`} literal 4271 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 diff --git a/packages/checkpoint_asg_interface b/packages/checkpoint_asg_interface index a7a370c..039db61 100644 --- a/packages/checkpoint_asg_interface +++ b/packages/checkpoint_asg_interface @@ -4,11 +4,12 @@ ' - 2021-03-03: rewrite for CMK 2.x\n', 'download_url': 'http://thl-cmk.hopto.org/', 'files': {'agent_based': ['checkpoint_asg_interface.py'], - 'checkman': ['checkpoint_asg_interface']}, + 'checkman': ['checkpoint_asg_interface'], + 'web': ['plugins/wato/checkpoint_asg_interface.py']}, 'name': 'checkpoint_asg_interface', - 'num_files': 2, + 'num_files': 3, 'title': 'Check Point Maestro SMO interfaces', - 'version': '20201109.v0.1', - 'version.min_required': '2.0.0b8', + 'version': '20210911.v0.2', + 'version.min_required': '2.0.0', 'version.packaged': '2021.07.14', 'version.usable_until': None} \ No newline at end of file diff --git a/web/plugins/wato/checkpoint_asg_interface.py b/web/plugins/wato/checkpoint_asg_interface.py new file mode 100644 index 0000000..a7c7e7e --- /dev/null +++ b/web/plugins/wato/checkpoint_asg_interface.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# +from cmk.gui.i18n import _ +from cmk.gui.valuespec import ( + Dictionary, + TextAscii, + Tuple, + Integer, + Transform, + MonitoringState, +) + +from cmk.gui.plugins.wato import ( + CheckParameterRulespecWithItem, + rulespec_registry, + RulespecGroupCheckParametersNetworking, +) + + +def _parameter_valuespec_checkpoint_asg_interface(): + return Transform( + Dictionary(elements=[ + ('state_not_full_duplex', + MonitoringState( + default_value=2, + title=_('State if not Full duplex'), + help=_('Monitoring state if interface not in Full duplex state'), + )), + ('state_not_up_up', + MonitoringState( + default_value=2, + title=_('State if not Up/Up'), + help=_('Monitoring state if interface not in Up/Up state'), + )), + ('state_speed_changed', + MonitoringState( + default_value=1, + title=_('State if speed changed'), + help=_('Monitoring state if interface is differs from discovery time'), + )), + ])) + + +rulespec_registry.register( + CheckParameterRulespecWithItem( + check_group_name='checkpoint_asg_interface', + group=RulespecGroupCheckParametersNetworking, + match_type='dict', + parameter_valuespec=_parameter_valuespec_checkpoint_asg_interface, + title=lambda: _('Check Point ASG Cores'), + item_spec=lambda: TextAscii(title=_('Interface name'), ), + + )) -- GitLab