From 2d4b137827759a8c77a904ef841e4f65537a316d Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Mon, 18 Apr 2022 10:27:13 +0200 Subject: [PATCH] update project --- agent_based/bgp_peer.py | 3 +++ agent_based/utils/bgp_peer.py | 13 ++++++++++--- bgp_peer.mkp | Bin 9990 -> 10089 bytes web/plugins/metrics/bgp_peer.py | 2 ++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/agent_based/bgp_peer.py b/agent_based/bgp_peer.py index 36d776f..a4bf779 100644 --- a/agent_based/bgp_peer.py +++ b/agent_based/bgp_peer.py @@ -132,6 +132,9 @@ def check_bgp_peer(item, params, section: Dict[str, BgpPeer]) -> CheckResult: yield Result(state=State(neighborstate.get(str(peer.peer_state))), notice=f'Peer state: {peer.peer_statestr}') + if peer.peer_unavail_reason != 0: # huawei peer unavailable state + yield Result(state=State.CRIT, notice=F'Peer unavailable reason: {peer.peer_unavail_reason_str}') + acceptedprefixes = peer.accepted_prefixes prefixadminlimit = peer.prefix_admin_limit prefixthreshold = peer.prefix_threshold diff --git a/agent_based/utils/bgp_peer.py b/agent_based/utils/bgp_peer.py index 751acbf..f48d764 100644 --- a/agent_based/utils/bgp_peer.py +++ b/agent_based/utils/bgp_peer.py @@ -9,8 +9,11 @@ # # include file, will be used with bgp_peer, inv_bgp_peer, cisco_bgp_peer, inv_cisco_bgp_peer # +# 2022-04-17: added peer_unavail_reason/peer_unavail_reason_str for huawei bgp peers +# + import re -from typing import List, Tuple, Optional,Dict +from typing import List, Tuple, Optional, Dict from dataclasses import dataclass @@ -27,6 +30,8 @@ class BgpPeer: prefix_threshold: Optional[int] prefix_clear_threshold: Optional[int] accepted_prefixes: Optional[int] + peer_unavail_reason: Optional[int] + peer_unavail_reason_str: Optional[str] def sec2hr(seconds): @@ -184,6 +189,8 @@ def bgp_get_peer_entry(peer: List) -> Optional[Dict[str, BgpPeer]]: prefix_threshold=None, prefix_clear_threshold=None, accepted_prefixes=None, + peer_unavail_reason=0, + peer_unavail_reason_str='', ) for key, value in [ @@ -194,7 +201,7 @@ def bgp_get_peer_entry(peer: List) -> Optional[Dict[str, BgpPeer]]: ]: try: bgp_peer.metric_rate.append((key, int(value))) - except ValueError: + except (ValueError, TypeError): pass for key, value in [ @@ -203,7 +210,7 @@ def bgp_get_peer_entry(peer: List) -> Optional[Dict[str, BgpPeer]]: ]: try: bgp_peer.metric_count.append((key, int(value))) - except ValueError: + except (ValueError, TypeError): pass return {remote_addr: bgp_peer} diff --git a/bgp_peer.mkp b/bgp_peer.mkp index 60157fe0307a7c1b816c097bd33c8256351fab56..c86dfbe013fcdbc381fe5fed85a3c79c87c4e48f 100644 GIT binary patch literal 10089 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 literal 9990 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 E10Q?H#{d8T diff --git a/web/plugins/metrics/bgp_peer.py b/web/plugins/metrics/bgp_peer.py index 60648ce..d6cee6e 100644 --- a/web/plugins/metrics/bgp_peer.py +++ b/web/plugins/metrics/bgp_peer.py @@ -88,6 +88,8 @@ metric_info['bgp_peer_suppressedprefixes'] = { } + + ###################################################################################################################### # # how to graph perdata for bgp peer -- GitLab