Skip to content

Commit 64895fa

Browse files
Update unifi_controller.py
1 parent f364661 commit 64895fa

File tree

1 file changed

+76
-83
lines changed

1 file changed

+76
-83
lines changed

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

Lines changed: 76 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44
## MIT License
55
##
6-
## Copyright (c) 2021 Bash Club
6+
## Copyright (c) 2024 Bash Club
77
##
88
## Permission is hereby granted, free of charge, to any person obtaining a copy
99
## of this software and associated documentation files (the "Software"), to deal
@@ -120,7 +120,7 @@ def check_unifi_controller(item,section):
120120
state=State.OK,
121121
summary=f"Version: {section.cloudkey_version}"
122122
)
123-
if int(section.cloudkey_update_available) > 0:
123+
if _safe_int(section.cloudkey_update_available) > 0:
124124
yield Result(
125125
state=State.WARN,
126126
notice=_("Update available")
@@ -270,7 +270,6 @@ def inventory_unifi_device_shortlist(section):
270270
def discovery_unifi_device(section):
271271
yield Service(item="Device Status")
272272
yield Service(item="Unifi Device")
273-
yield Service(item="Unifi Device Uptime")
274273
yield Service(item="Active-User")
275274
if section.type != "uap": # kein satisfaction bei ap .. radio/ssid haben schon
276275
yield Service(item="Satisfaction")
@@ -316,14 +315,6 @@ def check_unifi_device(item,section):
316315
)
317316
yield Metric("user_sta",_active_user)
318317
yield Metric("guest_sta",_safe_int(section.guest_num_sta))
319-
if item == "Unifi Device Uptime":
320-
_uptime = int(section.uptime) if section.uptime else -1
321-
if _uptime > 0:
322-
yield Result(
323-
state=State.OK,
324-
summary=render.timespan(_uptime)
325-
)
326-
yield Metric("unifi_uptime",_uptime)
327318
if item == "Satisfaction":
328319
yield Result(
329320
state=State.OK,
@@ -415,7 +406,7 @@ def inventory_unifi_device(section):
415406

416407
############ DEVICEPORT ###########
417408
@dataclass
418-
class unifi_interface(interfaces.Interface):
409+
class unifi_interface(interfaces.InterfaceWithCounters):
419410
jumbo : bool = False
420411
satisfaction : int = 0
421412
poe_enable : bool = False
@@ -430,8 +421,6 @@ class unifi_interface(interfaces.Interface):
430421
ip_address : Optional[str] = None
431422
portconf : Optional[str] = None
432423

433-
def __post_init__(self) -> None:
434-
self.finalize()
435424

436425
def _convert_unifi_counters_if(section: Section) -> interfaces.Section:
437426
## 10|port_idx|10
@@ -488,25 +477,29 @@ def _convert_unifi_counters_if(section: Section) -> interfaces.Section:
488477

489478
return [
490479
unifi_interface(
491-
index=str(netif.port_idx),
492-
descr=netif.name,
493-
alias=netif.name,
494-
type='6',
495-
speed=_safe_int(netif.speed)*1000000,
496-
oper_status=netif.oper_status,
497-
admin_status=netif.admin_status,
498-
in_octets=_safe_int(netif.rx_bytes),
499-
in_ucast=_safe_int(netif.rx_packets),
500-
in_mcast=_safe_int(netif.rx_multicast),
501-
in_bcast=_safe_int(netif.rx_broadcast),
502-
in_discards=_safe_int(netif.rx_dropped),
503-
in_errors=_safe_int(netif.rx_errors),
504-
out_octets=_safe_int(netif.tx_bytes),
505-
out_ucast=_safe_int(netif.tx_packets),
506-
out_mcast=_safe_int(netif.tx_multicast),
507-
out_bcast=_safe_int(netif.tx_broadcast),
508-
out_discards=_safe_int(netif.tx_dropped),
509-
out_errors=_safe_int(netif.tx_errors),
480+
attributes=interfaces.Attributes(
481+
index=str(netif.port_idx),
482+
descr=netif.name,
483+
alias=netif.name,
484+
type='6',
485+
speed=_safe_int(netif.speed)*1000000,
486+
oper_status=netif.oper_status,
487+
admin_status=netif.admin_status,
488+
),
489+
counters=interfaces.Counters(
490+
in_octets=_safe_int(netif.rx_bytes),
491+
in_ucast=_safe_int(netif.rx_packets),
492+
in_mcast=_safe_int(netif.rx_multicast),
493+
in_bcast=_safe_int(netif.rx_broadcast),
494+
in_disc=_safe_int(netif.rx_dropped),
495+
in_err=_safe_int(netif.rx_errors),
496+
out_octets=_safe_int(netif.tx_bytes),
497+
out_ucast=_safe_int(netif.tx_packets),
498+
out_mcast=_safe_int(netif.tx_multicast),
499+
out_bcast=_safe_int(netif.tx_broadcast),
500+
out_disc=_safe_int(netif.tx_dropped),
501+
out_err=_safe_int(netif.tx_errors),
502+
),
510503
jumbo=True if netif.jumbo == "1" else False,
511504
satisfaction=_safe_int(netif.satisfaction) if netif.satisfaction and netif.oper_status == "1" else 0,
512505
poe_enable=True if netif.poe_enable == "1" else False,
@@ -540,7 +533,7 @@ def check_unifi_network_port_if( ##fixme parsed_section_name
540533
section: Section,
541534
) -> CheckResult:
542535
_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
536+
iface = next(filter(lambda x: _safe_int(item,-1) == _safe_int(x.attributes.index) or item == x.attributes.alias,_converted_ifs),None) ## fix Service Discovery appearance alias/descr
544537
yield from interfaces.check_multiple_interfaces(
545538
item,
546539
params,
@@ -673,41 +666,42 @@ def discovery_unifi_ssids(section):
673666

674667
def check_unifi_ssids(item,section):
675668
ssid = section.get(item)
676-
_channels = ",".join(list(filter(lambda x: _safe_int(x) > 0,[ssid.ng_channel,ssid.na_channel])))
677-
yield Result(
678-
state=State.OK,
679-
summary=f"Channels: {_channels}"
680-
)
681-
if (_safe_int(ssid.ng_is_guest) + _safe_int(ssid.na_is_guest)) > 0:
669+
if ssid:
670+
_channels = ",".join(list(filter(lambda x: _safe_int(x) > 0,[ssid.ng_channel,ssid.na_channel])))
682671
yield Result(
683672
state=State.OK,
684-
summary="Guest"
673+
summary=f"Channels: {_channels}"
685674
)
686-
_satisfaction = max(0,min(_safe_int(ssid.ng_satisfaction),_safe_int(ssid.na_satisfaction)))
687-
yield Result(
688-
state=State.OK,
689-
summary=f"Satisfaction: {_satisfaction}"
690-
)
691-
_num_sta = _safe_int(ssid.na_num_sta) + _safe_int(ssid.ng_num_sta)
692-
if _num_sta > 0:
675+
if (_safe_int(ssid.ng_is_guest) + _safe_int(ssid.na_is_guest)) > 0:
676+
yield Result(
677+
state=State.OK,
678+
summary="Guest"
679+
)
680+
_satisfaction = max(0,min(_safe_int(ssid.ng_satisfaction),_safe_int(ssid.na_satisfaction)))
693681
yield Result(
694682
state=State.OK,
695-
summary=f"User: {_num_sta}"
683+
summary=f"Satisfaction: {_satisfaction}"
696684
)
697-
yield Metric("satisfaction",max(0,_satisfaction))
698-
yield Metric("wlan_24Ghz_num_user",_safe_int(ssid.ng_num_sta) )
699-
yield Metric("wlan_5Ghz_num_user",_safe_int(ssid.na_num_sta) )
700-
701-
yield Metric("na_avg_client_signal",_safe_int(ssid.na_avg_client_signal))
702-
yield Metric("ng_avg_client_signal",_safe_int(ssid.ng_avg_client_signal))
685+
_num_sta = _safe_int(ssid.na_num_sta) + _safe_int(ssid.ng_num_sta)
686+
if _num_sta > 0:
687+
yield Result(
688+
state=State.OK,
689+
summary=f"User: {_num_sta}"
690+
)
691+
yield Metric("satisfaction",max(0,_satisfaction))
692+
yield Metric("wlan_24Ghz_num_user",_safe_int(ssid.ng_num_sta) )
693+
yield Metric("wlan_5Ghz_num_user",_safe_int(ssid.na_num_sta) )
703694

704-
yield Metric("na_tcp_packet_loss",_safe_int(ssid.na_tcp_packet_loss))
705-
yield Metric("ng_tcp_packet_loss",_safe_int(ssid.ng_tcp_packet_loss))
706-
707-
yield Metric("na_wifi_retries",_safe_int(ssid.na_wifi_retries))
708-
yield Metric("ng_wifi_retries",_safe_int(ssid.ng_wifi_retries))
709-
yield Metric("na_wifi_latency",_safe_int(ssid.na_wifi_latency))
710-
yield Metric("ng_wifi_latency",_safe_int(ssid.ng_wifi_latency))
695+
yield Metric("na_avg_client_signal",_safe_int(ssid.na_avg_client_signal))
696+
yield Metric("ng_avg_client_signal",_safe_int(ssid.ng_avg_client_signal))
697+
698+
yield Metric("na_tcp_packet_loss",_safe_int(ssid.na_tcp_packet_loss))
699+
yield Metric("ng_tcp_packet_loss",_safe_int(ssid.ng_tcp_packet_loss))
700+
701+
yield Metric("na_wifi_retries",_safe_int(ssid.na_wifi_retries))
702+
yield Metric("ng_wifi_retries",_safe_int(ssid.ng_wifi_retries))
703+
yield Metric("na_wifi_latency",_safe_int(ssid.na_wifi_latency))
704+
yield Metric("ng_wifi_latency",_safe_int(ssid.ng_wifi_latency))
711705

712706

713707

@@ -732,26 +726,27 @@ def discovery_unifi_ssidlist(section):
732726

733727
def check_unifi_ssidlist(item,section):
734728
ssid = section.get(item)
735-
yield Result(
736-
state=State.OK,
737-
summary=f"Channels: {ssid.channels}"
738-
)
739-
yield Result(
740-
state=State.OK,
741-
summary=f"User: {ssid.num_sta}"
742-
)
743-
yield Metric("wlan_24Ghz_num_user",_safe_int(ssid.ng_num_sta) )
744-
yield Metric("wlan_5Ghz_num_user",_safe_int(ssid.na_num_sta) )
745-
yield Metric("na_avg_client_signal",_safe_int(ssid.na_avg_client_signal))
746-
yield Metric("ng_avg_client_signal",_safe_int(ssid.ng_avg_client_signal))
729+
if ssid:
730+
yield Result(
731+
state=State.OK,
732+
summary=f"Channels: {ssid.channels}"
733+
)
734+
yield Result(
735+
state=State.OK,
736+
summary=f"User: {ssid.num_sta}"
737+
)
738+
yield Metric("wlan_24Ghz_num_user",_safe_int(ssid.ng_num_sta) )
739+
yield Metric("wlan_5Ghz_num_user",_safe_int(ssid.na_num_sta) )
740+
yield Metric("na_avg_client_signal",_safe_int(ssid.na_avg_client_signal))
741+
yield Metric("ng_avg_client_signal",_safe_int(ssid.ng_avg_client_signal))
742+
743+
yield Metric("na_tcp_packet_loss",_safe_int(ssid.na_tcp_packet_loss))
744+
yield Metric("ng_tcp_packet_loss",_safe_int(ssid.ng_tcp_packet_loss))
747745

748-
yield Metric("na_tcp_packet_loss",_safe_int(ssid.na_tcp_packet_loss))
749-
yield Metric("ng_tcp_packet_loss",_safe_int(ssid.ng_tcp_packet_loss))
750-
751-
yield Metric("na_wifi_retries",_safe_int(ssid.na_wifi_retries))
752-
yield Metric("ng_wifi_retries",_safe_int(ssid.ng_wifi_retries))
753-
yield Metric("na_wifi_latency",_safe_int(ssid.na_wifi_latency))
754-
yield Metric("ng_wifi_latency",_safe_int(ssid.ng_wifi_latency))
746+
yield Metric("na_wifi_retries",_safe_int(ssid.na_wifi_retries))
747+
yield Metric("ng_wifi_retries",_safe_int(ssid.ng_wifi_retries))
748+
yield Metric("na_wifi_latency",_safe_int(ssid.na_wifi_latency))
749+
yield Metric("ng_wifi_latency",_safe_int(ssid.ng_wifi_latency))
755750

756751
register.agent_section(
757752
name = 'unifi_ssid_list',
@@ -766,5 +761,3 @@ def check_unifi_ssidlist(item,section):
766761
)
767762

768763

769-
770-

0 commit comments

Comments
 (0)