#!/usr/bin/env python

"""
Nagios plugin to check that Zephyr mirror forwarding is running.

This script just checks the contents of a file. The forwarding test
itself lives in api/bots/check-mirroring and should be run out of cron.

See bots/zephyr-mirror-crontab for the crontab details.
"""
from __future__ import print_function

import os
import time

RESULTS_FILE = "/var/lib/nagios_state/check-mirroring-results"

states = {
    "OK": 0,
    "WARNING": 1,
    "CRITICAL": 2,
    "UNKNOWN": 3
    }

def report(state, data, last_check):
    print("%s: Last test run completed at %s\n%s" % (
        state, time.strftime("%Y-%m-%d %H:%M %Z", time.gmtime(last_check)),
        data))
    exit(states[state])

data = open(RESULTS_FILE).read().strip()
if data.split("\n")[-1].strip() == "0":
    state = "OK"
else:
    state = "CRITICAL"

last_check = os.stat(RESULTS_FILE).st_mtime
time_since_last_check = time.time() - last_check
if time_since_last_check > 60 * 5:
    state = "UNKNOWN"
    data = "Results file is stale"

report(state, data, last_check)
