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 : |