Source code for gwdetchar.nagios.core
# coding=utf-8
# Copyright (C) Alex Urban (2019)
#
# This file is part of the GW DetChar python package.
#
# GW DetChar is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GW DetChar is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GW DetChar. If not, see <http://www.gnu.org/licenses/>.
"""Utilities for providing status updates to Nagios
"""
import json
from gwpy.time import to_gps
__author__ = 'Alex Urban <alexander.urban@ligo.org>'
# -- utilities ----------------------------------------------------------------
[docs]
def write_status(message, code, timeout=0, tmessage=None, nagiosfile=None):
"""Write a Nagios status file in JSON format
Parameters
----------
message : `str`
status message for Nagios
code : `int`
exit code for process
timeout : `int`, optional
timeout length, in seconds
tmessage : `str`, optional
timeout message
nagiosfile : `str`, optional
full path to a JSON status file, defaults to ``nagios.json``
Notes
-----
This function will write an output to the requested location, then exit
without returning.
"""
# status dictionary
status = {
"created_gps": int(to_gps('now')),
"status_intervals": [{
"start_sec": 0,
"txt_status": message,
"num_status": code
}],
}
# update timeout information
if timeout:
status["status_intervals"].append({
"start_sec": timeout,
"txt_status": tmessage,
"num_status": 3,
})
# get output file and write
nagiosfile = nagiosfile or 'nagios.json'
with open(nagiosfile, 'w') as fileobj:
json.dump(status, fileobj)