diff options
author | yayogev <yaronyogev@gmail.com> | 2017-09-06 20:17:57 +0300 |
---|---|---|
committer | yayogev <yaronyogev@gmail.com> | 2017-09-06 20:17:57 +0300 |
commit | f6bd0ee9158de10e75011783c087171898705ad0 (patch) | |
tree | 57a19bb65b613777db19648ebd660c3d51422f32 /app/monitoring/checks | |
parent | f666cfba54d300366822de2046766776c3e7771f (diff) |
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 <yaronyogev@gmail.com>
Diffstat (limited to 'app/monitoring/checks')
-rwxr-xr-x | app/monitoring/checks/check_pnic_ovs.py (renamed from app/monitoring/checks/check_interface.py) | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/app/monitoring/checks/check_interface.py b/app/monitoring/checks/check_pnic_ovs.py index 4140dfe..c26e42f 100755 --- a/app/monitoring/checks/check_interface.py +++ b/app/monitoring/checks/check_pnic_ovs.py @@ -9,13 +9,17 @@ # http://www.apache.org/licenses/LICENSE-2.0 # ############################################################################### -import re 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) @@ -24,27 +28,18 @@ nic_name = str(sys.argv[1]) rc = 0 try: - out = subprocess.check_output(["ifconfig " + nic_name], - stderr=subprocess.STDOUT, - shell=True) + 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() - 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) + if not lines: + rc = nic_not_found(nic_name, '') else: - rc = 0 if state_match.group(1) == 'UP' else 2 + line = lines[0] + if ' state UP ' not in line: + rc = 2 print(out) except subprocess.CalledProcessError as e: - print("Error finding NIC {}: {}\n".format(nic_name, binary2str(e.output))) - rc = 2 + rc = nic_not_found(nic_name, binary2str(e.output)) exit(rc) |