Skip to content

Commit 2643407

Browse files
author
Jan-Philipp Litza
committed
Handle removed sites/ports/radios/SSIDs gracefully
1 parent f364661 commit 2643407

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

lib/check_mk/base/plugins/agent_based/unifi_controller.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,11 @@ def discovery_unifi_sites(section):
158158
yield Service(item=f"{_item.desc}")
159159

160160
def check_unifi_sites(item,params,section):
161-
site = next(filter(lambda x: x.desc == item,section.values()))
161+
try:
162+
site = next(filter(lambda x: x.desc == item,section.values()))
163+
except StopIteration:
164+
return
165+
162166
yield Metric("satisfaction",max(0,_safe_int(site.satisfaction)))
163167

164168
if site.lan_status != "unknown":
@@ -540,7 +544,11 @@ def check_unifi_network_port_if( ##fixme parsed_section_name
540544
section: Section,
541545
) -> CheckResult:
542546
_converted_ifs = _convert_unifi_counters_if(section)
543-
iface = next(filter(lambda x: _safe_int(item,-1) == _safe_int(x.index) or item == x.alias,_converted_ifs),None) ## fix Service Discovery appearance alias/descr
547+
try:
548+
iface = next(filter(lambda x: _safe_int(item,-1) == _safe_int(x.index) or item == x.alias,_converted_ifs),None) ## fix Service Discovery appearance alias/descr
549+
except StopIteration:
550+
return
551+
544552
yield from interfaces.check_multiple_interfaces(
545553
item,
546554
params,
@@ -628,7 +636,11 @@ def discovery_unifi_radios(section):
628636

629637
def check_unifi_radios(item,section):
630638
_item = { "2.4Ghz" : "ng", "5Ghz" : "na" }.get(item)
631-
radio = next(filter(lambda x: x.radio == _item,section.values()))
639+
try:
640+
radio = next(filter(lambda x: x.radio == _item,section.values()))
641+
except StopIteration:
642+
return
643+
632644
yield Metric("read_data",_safe_int(radio.rx_bytes))
633645
yield Metric("write_data",_safe_int(radio.tx_bytes))
634646
yield Metric("satisfaction",max(0,_safe_int(radio.satisfaction)))
@@ -672,7 +684,11 @@ def discovery_unifi_ssids(section):
672684
yield Service(item=_ssid)
673685

674686
def check_unifi_ssids(item,section):
675-
ssid = section.get(item)
687+
try:
688+
ssid = section[item]
689+
except KeyError:
690+
return
691+
676692
_channels = ",".join(list(filter(lambda x: _safe_int(x) > 0,[ssid.ng_channel,ssid.na_channel])))
677693
yield Result(
678694
state=State.OK,
@@ -731,7 +747,11 @@ def discovery_unifi_ssidlist(section):
731747
yield Service(item=_ssid)
732748

733749
def check_unifi_ssidlist(item,section):
734-
ssid = section.get(item)
750+
try:
751+
ssid = section[item]
752+
except KeyError:
753+
return
754+
735755
yield Result(
736756
state=State.OK,
737757
summary=f"Channels: {ssid.channels}"

0 commit comments

Comments
 (0)