-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathservice.py
More file actions
81 lines (54 loc) · 2.26 KB
/
Copy pathservice.py
File metadata and controls
81 lines (54 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import urllib.request, urllib.error, urllib.parse
import sys
from subprocess import Popen, PIPE
import json
# Taken from PyNag.
OK, WARNING, CRITICAL, UNKNOWN = 0, 1, 2, 3
def http_req(auth_url, auth_req_data):
auth_req = urllib.request.Request(auth_url, data=auth_req_data)
auth_resp = urllib.request.urlopen(auth_req)
auth_resp_content = auth_resp.read()
return auth_resp_content;
def http_req_json(url, data = None):
if data == None:
data = {}
return json.loads(req(url, json.dumps(data)));
def easyexec(command):
p = Popen(command, stdout = PIPE, stderr = PIPE)
out, err = p.communicate()
return out.decode("utf-8").strip(), err.decode("utf-8").strip()
class ServiceController(dict):
defaultExitStatus = OK
def __init__(self):
self['metrics'] = list()
self['entities'] = list()
self['messages'] = list()
def addSubresult(self, name, karma = "GOOD", value = "", comment = None):
return self.addEntity(name, "subresult", karma, value, comment);
def addEntity(self, name, classType = "", karma = "GOOD", value = "", comment = None):
entity = {"name": name, "type": classType, "karma": karma, "value": value, "comment": comment, "properties": dict()}
self['entities'].append(entity);
return entity;
def addMetric(self, name, value, karma = "GOOD"):
metric = {"name": name, "value": value, "karma": karma}
self['metrics'].append(metric)
return metric
def addMessageWarning(self, message=None):
if WARNING > self.defaultExitStatus:
self.defaultExitStatus = WARNING
self['messages'].append(message)
def exitOk(self, message = None):
self.exit(OK, message)
def exitWarning(self, message = None):
self.exit(WARNING, message)
def exitCritical(self, message = None):
self.exit(CRITICAL, message)
def exitUnknown(self, message = None):
self.exit(UNKNOWN, message)
def exit(self, status = None, message = None):
print(("<json>%s</json>" % json.dumps(self, indent = 4)))
if message is not None:
print(message)
if status == None:
status = self.defaultExitStatus
sys.exit(status)