charm-neutron-openvswitch/files/ovs_vsctl/check_ovs_vsctl.py

52 lines
1.2 KiB
Python

#!/usr/bin/env python3
# -*- coding: us-ascii -*-
import os
from nagios_plugin3 import (
CriticalError,
UnknownError,
try_check,
check_file_freshness,
)
INPUT_FILE = "/var/lib/nagios/ovs_vsctl.out"
INPUT_RC = "/var/lib/nagios/ovs_vsctl.rc"
def parse_output():
"""Parse the ovs-vsctl list-br output and raise alertable states."""
if not os.path.exists(INPUT_FILE):
raise UnknownError(
"UNKNOWN: {} does not exist (yet?)".format(INPUT_FILE))
if not os.path.exists(INPUT_RC):
raise UnknownError(
"UNKNOWN: {} does not exist (yet?)".format(INPUT_RC))
try_check(check_file_freshness, INPUT_FILE)
with open(INPUT_RC) as rc_raw:
code = rc_raw.readline().strip()
if code != "0":
raise CriticalError("CRITICAL: ovs-vsctl list-br returns error")
with open(INPUT_FILE) as brs_raw:
brs = brs_raw.readlines()
if len(brs) == 0:
raise CriticalError(
"CRITICAL: ovs-vsctl list-br returned no bridges")
msg = ", ".join(br.strip() for br in brs)
print("OK: {}".format(msg))
def main():
"""Define main subroutine."""
try_check(parse_output)
if __name__ == "__main__":
main()