Module: check_mk
Branch: master
Commit: dc4c2ce065b9f919a7a8b316d37c85e63669fbce
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=dc4c2ce065b9f9…
Author: Moritz Kiemer <mo(a)mathias-kettner.de>
Date: Thu Dec 6 14:12:39 2018 +0100
fix unexpected snmp parsing
Change-Id: I3e88d7277f448d4a071aaf051d95a7e2fc24cc0a
---
checks/juniper_bgp_state | 19 ++++----
.../datasets/juniper_bgp_state_1_regression.py | 4 +-
.../datasets/juniper_bgp_state_ip_addresses.py | 54 +++++++++-------------
3 files changed, 32 insertions(+), 45 deletions(-)
diff --git a/checks/juniper_bgp_state b/checks/juniper_bgp_state
index 04e26dc..6f4c96e 100644
--- a/checks/juniper_bgp_state
+++ b/checks/juniper_bgp_state
@@ -26,14 +26,14 @@
def _clean_v4_address(chunks):
- return "%d.%d.%d.%d" % tuple(int(c, 16) for c in chunks)
+ return "%d.%d.%d.%d" % tuple(chunks)
def _clean_v6_address(chunks):
- ichunks = iter(chunks)
+ ichunks = iter('%02x' % i for i in chunks)
blocks = ("%s%s" % pair for pair in zip(ichunks, ichunks))
stripped_blocks = ('0' if b == '0000' else b.lstrip('0') for
b in blocks)
- v6_string = ':'.join(b.lower() for b in stripped_blocks)
+ v6_string = ':'.join(b for b in stripped_blocks)
# replace longest series of zeros
for length in range(8, 0, -1):
@@ -49,15 +49,14 @@ def _clean_v6_address(chunks):
def juniper_bgp_state_create_item(peering_entry):
- chunks = peering_entry.split()
try:
- if len(chunks) == 4:
- return _clean_v4_address(chunks)
- elif len(chunks) == 16:
- return _clean_v6_address(chunks)
+ if len(peering_entry) == 4:
+ return _clean_v4_address(peering_entry)
+ elif len(peering_entry) == 16:
+ return _clean_v6_address(peering_entry)
except (ValueError, IndexError):
pass
- return "'%s'" % peering_entry.strip()
+ return ' '.join('%02X' % i for i in peering_entry) # that's what
has been in the data
def parse_juniper_bgp_state(info):
@@ -118,7 +117,7 @@ check_info["juniper_bgp_state"] = {
[
2, # jnxBgpM2PeerState
3, # jnxBgpM2PeerStatus (like operational status)
- 11, # jnxBgpM2PeerRemoteAddr
+ BINARY(11), # jnxBgpM2PeerRemoteAddr
]),
"snmp_scan_function":
lambda oid:
oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.2636.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 83064b9..6ee3eb2 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
@@ -1,8 +1,8 @@
checkname = 'juniper_bgp_state'
info = [
- [u'6', u'2', '64 60 01 22'],
- [u'3', u'2', '64 60 01 26'],
+ [u'6', u'2', [100, 96, 1, 34]],
+ [u'3', u'2', [100, 96, 1, 38]],
]
discovery = {
diff --git a/tests/unit/checks/generictests/datasets/juniper_bgp_state_ip_addresses.py
b/tests/unit/checks/generictests/datasets/juniper_bgp_state_ip_addresses.py
index 1d8c10c..b8c2eb4 100644
--- a/tests/unit/checks/generictests/datasets/juniper_bgp_state_ip_addresses.py
+++ b/tests/unit/checks/generictests/datasets/juniper_bgp_state_ip_addresses.py
@@ -1,37 +1,25 @@
+
+
checkname = 'juniper_bgp_state'
-info = [
- [u'4', u'1', 'DE AD BE EF 00 40 01 11 00 00 00 00 00 00 00
01'],
- [u'4', u'2', '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00'],
- [u'4', u'2', 'DE AD BE EF 00 40 01 11 00 00 00 00 00 00 00
00'],
- [u'4', u'1', '00 00 00 00 00 40 01 11 00 00 10 0A 00 00 00
00'],
- [u'5', u'2', 'this is not a valid IP'],
+
+info = [[u'4',
+ u'1',
+ [222, 173, 190, 239, 0, 64, 1, 17, 0, 0, 0, 0, 0, 0, 0, 1]],
+ [u'4', u'2', [0] * 16],
]
-discovery = {
- '': [
- (u'[dead:beef:40:111::1]', {}), (u'[::]', {}),
- (u'[dead:beef:40:111::]', {}), (u'[::40:111:0:100a:0:0]', {}),
- (u"'this is not a valid IP'", {}),
- ]
-}
-
-checks = {
- '': [
- (u'[dead:beef:40:111::1]', 'default',
- [(0, u'Status with peer [dead:beef:40:111::1] is opensent', []),
- (1, 'operational status: halted', [])]),
- (u'[::]', 'default',
- [(2, u'Status with peer [::] is opensent', []),
- (0, 'operational status: running', [])]),
- (u'[dead:beef:40:111::]', 'default',
- [(2, u'Status with peer [dead:beef:40:111::] is opensent', []),
- (0, 'operational status: running', [])]),
- (u'[::40:111:0:100a:0:0]', 'default',
- [(0, u'Status with peer [::40:111:0:100a:0:0] is opensent', []),
- (1, 'operational status: halted', [])]),
- (u"'this is not a valid IP'", 'default',
- [(2, u"Status with peer 'this is not a valid IP' is
openconfirm", []),
- (0, 'operational status: running', [])]),
- ]
-}
+
+discovery = {'': [('[dead:beef:40:111::1]', {}), ("[::]",
{})]}
+
+
+checks = {'': [('[dead:beef:40:111::1]',
+ 'default',
+ [(0, 'Status with peer [dead:beef:40:111::1] is opensent', []),
+ (1, 'operational status: halted', [])]),
+ (u"[::]",
+ 'default',
+ [(2,
+ u"Status with peer [::] is opensent",
+ []),
+ (0, 'operational status: running', [])])]}