This commit is contained in:
Adrien Bourmault 2022-02-07 20:30:07 +01:00 committed by admin666
parent 4bd6d19c60
commit 37146b0d03
1 changed files with 29 additions and 38 deletions

View File

@ -26,6 +26,9 @@ class ServiceData:
elif self.serviceData[host]["status_type"] == "UNKNOWN": elif self.serviceData[host]["status_type"] == "UNKNOWN":
msg = "{}, état de {} inconnu ({})".format(maintainer, host, text) msg = "{}, état de {} inconnu ({})".format(maintainer, host, text)
elif self.serviceData[host]["status_type"] == "CUSTOM":
msg = "{}, nouvelle notification de {} ({})".format(maintainer, host, text)
elif self.serviceData[host]["status_type"] == "RECOVERY": elif self.serviceData[host]["status_type"] == "RECOVERY":
msg = "{}, problème résolu sur {} ({})".format(maintainer, host, text) msg = "{}, problème résolu sur {} ({})".format(maintainer, host, text)
@ -59,25 +62,16 @@ class ServiceData:
def push(self, msg): def push(self, msg):
# $notification.type$|$host.display_name$/$service.name$|$service.state$|$service.output$|$notification.author$|$notification.comment$
# EX: cominfra@salons.a-lec.org|CUSTOM|ctrlv.chalec.org/SSH server|CRITICAL|connect to address ctrlv.chalec.org and port 22: Connexion refusée|neox@a-lec.org|AGAIN
try:
# Get current time # Get current time
curtime = datetime.datetime.now().strftime("%m/%d/%Y, %H:%M:%S") curtime = datetime.datetime.now().strftime("%m/%d/%Y, %H:%M:%S")
# separate dest and message # Get all params
destmuc, rmsg = msg.split("|") destmuc, status_type, location, status_state, text, sender, comment = msg.split("|")
print("Dest: %s, Msg: %s" % (destmuc, msg))
# separate and parse lines print("Status: %s" % (status_type + " (" + status_state + ")"))
cutmsg_l0 = rmsg.split("\n")[0].split(" ")
cutmsg_l1 = rmsg.split("\n")[1].split("-")
# get the status of location
status_type = cutmsg_l0[0].replace(" ", "")
status_state = cutmsg_l0[-1].replace(" ", "")
# get the location
location = ""
for i in range(len(cutmsg_l0) - 2):
location += cutmsg_l0[i+1] + " "
location = location[:-1]
# check if message is about a service or host # check if message is about a service or host
if len(location.split("/")) > 1: if len(location.split("/")) > 1:
@ -85,16 +79,14 @@ class ServiceData:
else: else:
host = location host = location
service = False service = False
text = status_state + ": " + cutmsg_l1[1].split("(")[0][1:]
raw = rmsg.split("\n")[1]
print("Dest: %s, Msg: %s" % (destmuc, rmsg))
print("Status: %s" % (status_type + " (" + status_state + ")"))
print("Host: %s, Service: %s" % (host, service)) print("Host: %s, Service: %s" % (host, service))
print("Text: %s" % (text)) print("Text: %s" % (text))
except Exception as e:
print("ERROR in serviceData.push():" + str(e))
return
# Is that host known # Is that host known
if host in self.serviceData: if host in self.serviceData:
@ -148,7 +140,6 @@ class ServiceData:
self.serviceData[host][service]["status_state"] = status_state self.serviceData[host][service]["status_state"] = status_state
self.serviceData[host][service]["status_type"] = status_type self.serviceData[host][service]["status_type"] = status_type
self.serviceData[host][service]["text"] = text self.serviceData[host][service]["text"] = text
self.serviceData[host][service]["raw"] = raw
self.serviceData[host][service]["needUpdate"] = True self.serviceData[host][service]["needUpdate"] = True
maintainer = self.serviceData[host]["maintainer"] maintainer = self.serviceData[host]["maintainer"]
@ -175,7 +166,7 @@ class ServiceData:
self.maintainerData[maintainer][host] = [] self.maintainerData[maintainer][host] = []
self.maintainerData[maintainer][host].append( self.maintainerData[maintainer][host].append(
curtime + ": " + service + "/" + raw "%s [%s]: %s %s (%s %s)" % (curtime, status_state, service, text, sender, comment)
) )
print(self.serviceData) print(self.serviceData)