From f6bd0ee9158de10e75011783c087171898705ad0 Mon Sep 17 00:00:00 2001 From: yayogev Date: Wed, 6 Sep 2017 20:17:57 +0300 Subject: US2925 add monitoring of host pNIC in OVS - check_interface.py: renamed to check_pnic_ovs.py - check_interface.py: check changed to use 'ip link show' command - monitor.py: handle check name where object type contains underscore, specifically 'host_pnic' - monitor.py: refactored to work as class - monitoring_pnic.py: changed to handle either OVS or VPP - monitoring_check_handler.py: change to allow defining hard-coded check_type string for file_type naming - monitoring config templates: removed default handler Change-Id: Iad38fa108e9ceae18a7c94b3570a8d9b836a8632 Signed-off-by: yayogev --- app/monitoring/checks/check_interface.py | 50 -------------------------------- app/monitoring/checks/check_pnic_ovs.py | 45 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 50 deletions(-) delete mode 100755 app/monitoring/checks/check_interface.py create mode 100755 app/monitoring/checks/check_pnic_ovs.py (limited to 'app/monitoring/checks') diff --git a/app/monitoring/checks/check_interface.py b/app/monitoring/checks/check_interface.py deleted file mode 100755 index 4140dfe..0000000 --- a/app/monitoring/checks/check_interface.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python3 -############################################################################### -# Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) # -# and others # -# # -# All rights reserved. This program and the accompanying materials # -# are made available under the terms of the Apache License, Version 2.0 # -# which accompanies this distribution, and is available at # -# http://www.apache.org/licenses/LICENSE-2.0 # -############################################################################### - -import re -import sys -import subprocess - -from binary_converter import binary2str - - -if len(sys.argv) < 2: - print('name of interface must be specified') - exit(2) -nic_name = str(sys.argv[1]) - -rc = 0 - -try: - out = subprocess.check_output(["ifconfig " + nic_name], - stderr=subprocess.STDOUT, - shell=True) - out = binary2str(out) - lines = out.splitlines() - line_number = 1 - line = -1 - while line_number < len(lines): - line = lines[line_number] - if ' BROADCAST ' in line: - break - line_number += 1 - state_match = re.match('^\W+([A-Z]+)', line) - if not state_match: - rc = 2 - print('Error: failed to find status in ifconfig output: ' + out) - else: - rc = 0 if state_match.group(1) == 'UP' else 2 - print(out) -except subprocess.CalledProcessError as e: - print("Error finding NIC {}: {}\n".format(nic_name, binary2str(e.output))) - rc = 2 - -exit(rc) diff --git a/app/monitoring/checks/check_pnic_ovs.py b/app/monitoring/checks/check_pnic_ovs.py new file mode 100755 index 0000000..c26e42f --- /dev/null +++ b/app/monitoring/checks/check_pnic_ovs.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +############################################################################### +# Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) # +# and others # +# # +# All rights reserved. This program and the accompanying materials # +# are made available under the terms of the Apache License, Version 2.0 # +# which accompanies this distribution, and is available at # +# http://www.apache.org/licenses/LICENSE-2.0 # +############################################################################### + +import sys +import subprocess + +from binary_converter import binary2str + + +def nic_not_found(name: str, output: str): + print("Error finding NIC {}{}{}\n".format(name, ': ' if output else '', + output)) + return 2 + +if len(sys.argv) < 2: + print('name of interface must be specified') + exit(2) +nic_name = str(sys.argv[1]) + +rc = 0 + +try: + cmd = 'ip link show | grep -A1 "^[0-9]\+: {}:"'.format(nic_name) + out = subprocess.check_output([cmd], stderr=subprocess.STDOUT, shell=True) + out = binary2str(out) + lines = out.splitlines() + if not lines: + rc = nic_not_found(nic_name, '') + else: + line = lines[0] + if ' state UP ' not in line: + rc = 2 + print(out) +except subprocess.CalledProcessError as e: + rc = nic_not_found(nic_name, binary2str(e.output)) + +exit(rc) -- cgit 1.2.3-korg