Module: check_mk
Branch: master
Commit: b519cf0e6637d427cb889a1edc1b7f885c200b75
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=b519cf0e6637d4…
Author: Moritz Kiemer <mo(a)mathias-kettner.de>
Date: Mon Dec 3 13:25:22 2018 +0100
juniper_bgp_state: modernization
Change-Id: I3cf44e6013ef02a059142cc75084d4cd102e51e0
---
checks/juniper_bgp_state | 88 +++++++++++-----------
.../datasets/juniper_bgp_state_1_regression.py | 8 +-
2 files changed, 48 insertions(+), 48 deletions(-)
diff --git a/checks/juniper_bgp_state b/checks/juniper_bgp_state
index ba1d3cb..4bbcb60 100644
--- a/checks/juniper_bgp_state
+++ b/checks/juniper_bgp_state
@@ -29,61 +29,59 @@ def juniper_bgp_state_create_item(oid_end):
return re.sub(r"[0-9]+\.1\.[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\.1\.",
"", oid_end)
-def inventory_juniper_bgp_state(info):
- inventory = []
- for oid_end, _bgp_state, _bgp_operational_state in info:
- inventory.append((juniper_bgp_state_create_item(oid_end), None))
- return inventory
+def parse_juniper_bgp_state(info):
+ bgp_state_map = {
+ "0": "undefined", # 0 does not exist
+ "1": "idle", # 1
+ "2": "connect", # 2
+ "3": "active", # 3
+ "4": "opensent", # 4
+ "5": "openconfirm", # 5
+ "6": "established", # 6
+ }
+ bgp_operational_state_map = {
+ "0": "undefined", # 0 does not exist
+ "1": "halted", # 1
+ "2": "running" # 2
+ }
+ parsed = {}
+ for oid_end, state, operational_state in info:
+ item = juniper_bgp_state_create_item(oid_end)
+ state_txt = bgp_state_map.get(state.strip(), "undefined")
+ operational_txt = bgp_operational_state_map.get(operational_state.strip(),
"undefined")
+ parsed[item] = {
+ "state": state_txt,
+ "operational_state": operational_txt,
+ }
+ return parsed
-def check_juniper_bgp_state(item, _no_params, info):
- bgp_state_map = [
- "undefined", # 0 does not exist
- "idle", # 1
- "connect", # 2
- "active", # 3
- "opensent", # 4
- "openconfirm", # 5
- "established", # 6
- ]
- bgp_operational_state_map = [
- "undefined", # 0 does not exist
- "halted", # 1
- "running" # 2
- ]
- status = 0
- for oid_end, bgp_state, bgp_operational_state in info:
- peering_partner_ip = juniper_bgp_state_create_item(oid_end)
- if not bgp_state or not bgp_operational_state:
- return 3, "Missing SNMP data"
- bgp_state = int(bgp_state)
- bgp_operational_state = int(bgp_operational_state)
- if peering_partner_ip == item:
- operational_state_error_string = ""
- state_error_string = ""
+@get_parsed_item_data
+def check_juniper_bgp_state(item, _no_params, data):
- if bgp_operational_state != 2:
- status = 1
- operational_state_error_string = "(!)"
- elif bgp_state != 6:
- status = 2
- state_error_string = "(!!)"
+ state = data.get('state', "undefined")
+ operational_state = data.get('operational_state', "undefined")
- return status, "Status with peer %s is %s%s, operational status:
%s%s" % (
- peering_partner_ip,
- bgp_state_map[bgp_state],
- state_error_string,
- bgp_operational_state_map[bgp_operational_state],
- operational_state_error_string,
- )
+ status = {
+ "established": 0,
+ "undefined": 3,
+ }.get(state, 2)
+ # if we're halted, being un-established is fine
+ yield status if operational_state == "running" else 0, \
+ "Status with peer %s is %s" % (item, state)
- return 3, "Peering partner %s not configured" % item
+ op_status = {
+ "running": 0,
+ "undefined": 3,
+ }.get(operational_state, 1)
+ yield op_status, "operational status: %s" % operational_state
check_info["juniper_bgp_state"] = {
+ "parse_function": parse_juniper_bgp_state,
"check_function": check_juniper_bgp_state,
- "inventory_function": inventory_juniper_bgp_state,
+ "inventory_function": discover(),
"service_description": "BGP Status Peer %s",
"snmp_info": (
'.1.3.6.1.4.1.2636.5.1.1.2.1.1.1',
diff --git a/tests/unit/checks/generictests/datasets/juniper_bgp_state_1_regression.py
b/tests/unit/checks/generictests/datasets/juniper_bgp_state_1_regression.py
index 6ffbfd4..90ff830 100644
--- a/tests/unit/checks/generictests/datasets/juniper_bgp_state_1_regression.py
+++ b/tests/unit/checks/generictests/datasets/juniper_bgp_state_1_regression.py
@@ -6,15 +6,17 @@ info = [
]
discovery = {
- '': [(u'80.81.192.24', None), (u'80.81.192.3', None),
+ '': [(u'80.81.192.24', {}), (u'80.81.192.3', {}),
]
}
checks = {
'': [
(u'80.81.192.24', 'default',
- [(2, u'Status with peer 80.81.192.24 is active(!!), operational status:
running', [])]),
+ [(2, u'Status with peer 80.81.192.24 is active', []),
+ (0, 'operational status: running', [])]),
(u'80.81.192.3', 'default',
- [(0, u'Status with peer 80.81.192.3 is established, operational status:
running', [])]),
+ [(0, u'Status with peer 80.81.192.3 is established', []),
+ (0, 'operational status: running', [])]),
]
}