Statistics
| Branch: | Tag: | Revision:

root / snf-image-host / host-monitor.py @ 26b128ad

History | View | Annotate | Download (2 kB)

1 8847e13c Nikos Skalkotos
#!/usr/bin/env python
2 8847e13c Nikos Skalkotos
3 453ab965 Nikos Skalkotos
# Copyright (C) 2012 GRNET S.A.
4 8847e13c Nikos Skalkotos
#
5 8847e13c Nikos Skalkotos
# This program is free software; you can redistribute it and/or modify
6 8847e13c Nikos Skalkotos
# it under the terms of the GNU General Public License as published by
7 8847e13c Nikos Skalkotos
# the Free Software Foundation; either version 2 of the License, or
8 8847e13c Nikos Skalkotos
# (at your option) any later version.
9 8847e13c Nikos Skalkotos
#
10 8847e13c Nikos Skalkotos
# This program is distributed in the hope that it will be useful, but
11 8847e13c Nikos Skalkotos
# WITHOUT ANY WARRANTY; without even the implied warranty of
12 8847e13c Nikos Skalkotos
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 8847e13c Nikos Skalkotos
# General Public License for more details.
14 8847e13c Nikos Skalkotos
#
15 8847e13c Nikos Skalkotos
# You should have received a copy of the GNU General Public License
16 8847e13c Nikos Skalkotos
# along with this program; if not, write to the Free Software
17 8847e13c Nikos Skalkotos
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 8847e13c Nikos Skalkotos
# 02110-1301, USA.
19 8847e13c Nikos Skalkotos
20 453ab965 Nikos Skalkotos
"""Utility that generates monitoring messages for snf-image.
21 453ab965 Nikos Skalkotos

22 453ab965 Nikos Skalkotos
This utility given a message type as option and the message body as input will
23 29fd94d3 Nikos Skalkotos
print a monitoring message to stdout.
24 453ab965 Nikos Skalkotos
"""
25 453ab965 Nikos Skalkotos
26 8847e13c Nikos Skalkotos
import sys
27 8847e13c Nikos Skalkotos
import os
28 8847e13c Nikos Skalkotos
import json
29 8847e13c Nikos Skalkotos
import time
30 8847e13c Nikos Skalkotos
31 453ab965 Nikos Skalkotos
MSG_TYPE_ERROR = "image-error"
32 453ab965 Nikos Skalkotos
MSG_TYPE_INFO = "image-info"
33 453ab965 Nikos Skalkotos
34 453ab965 Nikos Skalkotos
PROTOCOL = {
35 453ab965 Nikos Skalkotos
    "error": (MSG_TYPE_ERROR, "messages"),
36 453ab965 Nikos Skalkotos
    "stderr": (MSG_TYPE_ERROR, "stderr"),
37 453ab965 Nikos Skalkotos
    "info": (MSG_TYPE_INFO, "messages")
38 453ab965 Nikos Skalkotos
}
39 453ab965 Nikos Skalkotos
40 8847e13c Nikos Skalkotos
PROGNAME = os.path.basename(sys.argv[0])
41 8847e13c Nikos Skalkotos
42 8847e13c Nikos Skalkotos
if __name__ == "__main__":
43 453ab965 Nikos Skalkotos
    usage = "Usage: %s <msg-type>\n" % PROGNAME
44 453ab965 Nikos Skalkotos
45 8847e13c Nikos Skalkotos
    if len(sys.argv) != 2:
46 8847e13c Nikos Skalkotos
        sys.stderr.write(usage)
47 8847e13c Nikos Skalkotos
        sys.exit(1)
48 8847e13c Nikos Skalkotos
49 453ab965 Nikos Skalkotos
    msg_type = sys.argv[1]
50 453ab965 Nikos Skalkotos
51 453ab965 Nikos Skalkotos
    if msg_type  not in PROTOCOL.keys():
52 453ab965 Nikos Skalkotos
        sys.stderr.write("Unknown message type: %s\n" % msg_type)
53 453ab965 Nikos Skalkotos
        sys.exit(1)
54 453ab965 Nikos Skalkotos
55 8847e13c Nikos Skalkotos
    msg = {}
56 453ab965 Nikos Skalkotos
    msg['type'] = PROTOCOL[msg_type][0]
57 453ab965 Nikos Skalkotos
58 453ab965 Nikos Skalkotos
    lines = []
59 fd48c0cd Nikos Skalkotos
    if msg_type == 'stderr':
60 fd48c0cd Nikos Skalkotos
        msg['stderr'] = sys.stdin.read()
61 fd48c0cd Nikos Skalkotos
    else:
62 fd48c0cd Nikos Skalkotos
        while True:
63 fd48c0cd Nikos Skalkotos
            line = sys.stdin.readline()
64 8847e13c Nikos Skalkotos
65 fd48c0cd Nikos Skalkotos
            if not line:
66 fd48c0cd Nikos Skalkotos
                break
67 453ab965 Nikos Skalkotos
68 fd48c0cd Nikos Skalkotos
            lines.append(line.strip())
69 fd48c0cd Nikos Skalkotos
        msg[PROTOCOL[msg_type][1]] = lines
70 453ab965 Nikos Skalkotos
71 453ab965 Nikos Skalkotos
    msg['timestamp'] = time.time()
72 8847e13c Nikos Skalkotos
    sys.stdout.write("%s\n" % json.dumps(msg))
73 8847e13c Nikos Skalkotos
74 8847e13c Nikos Skalkotos
    sys.exit(0)
75 8847e13c Nikos Skalkotos
76 8847e13c Nikos Skalkotos
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :