some deletions
This commit is contained in:
parent
dd984fedae
commit
a1ab1b1661
3 changed files with 0 additions and 154 deletions
|
|
@ -1,118 +0,0 @@
|
||||||
import re
|
|
||||||
|
|
||||||
|
|
||||||
class Host:
|
|
||||||
def __init__(self, name="", host="", parent="", services=None, comment=""):
|
|
||||||
self.name = name
|
|
||||||
self.host = host
|
|
||||||
self.parent = parent
|
|
||||||
self.services = services
|
|
||||||
self.comment = comment
|
|
||||||
|
|
||||||
def getHostServiceByName(self, serviceName):
|
|
||||||
for hostService in self.services:
|
|
||||||
if serviceName == hostService.service.name:
|
|
||||||
return hostService
|
|
||||||
return None
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
ret = "Host('Name: " + self.name + "', 'Access: " + self.host + "', "
|
|
||||||
if self.parent != "":
|
|
||||||
ret += "'Parent: " + self.parent + "', "
|
|
||||||
ret += "'HostServices: {"
|
|
||||||
for s in self.services:
|
|
||||||
ret += str(s) + "\n"
|
|
||||||
ret += "}"
|
|
||||||
return ret
|
|
||||||
|
|
||||||
|
|
||||||
class HostService:
|
|
||||||
def __init__(self, service, warning="", critical=""):
|
|
||||||
self.service = service
|
|
||||||
self.warning = warning
|
|
||||||
self.critical = critical
|
|
||||||
|
|
||||||
def setCommand(self, command):
|
|
||||||
self.service.command = command
|
|
||||||
|
|
||||||
def getCommand(self):
|
|
||||||
return self.service.command
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
|
|
||||||
ret = "HostService : " + str(self.service)
|
|
||||||
if self.warning:
|
|
||||||
ret += "warning: " + str(self.warning)
|
|
||||||
if self.critical:
|
|
||||||
ret += "critical: " + str(self.critical)
|
|
||||||
return ret
|
|
||||||
|
|
||||||
|
|
||||||
def parseHostList(hosts, services, log):
|
|
||||||
"""
|
|
||||||
parse the HostList and replace any command as necessary
|
|
||||||
"""
|
|
||||||
#precompiled regexPattern which finds replacements in service strings
|
|
||||||
pattern = re.compile("@(\w+)")
|
|
||||||
#get a List of Host Objects and leave services unparsed for this moment
|
|
||||||
parsedHosts = [Host(name, **values) for name, values in hosts.items()]
|
|
||||||
#predefined dict to cache service replacements by name
|
|
||||||
serviceReplacements = {}
|
|
||||||
for host in parsedHosts:
|
|
||||||
#list to store HostService Objects
|
|
||||||
hostServices = []
|
|
||||||
#lets start to parse the Service Dict.
|
|
||||||
for servicename, serviceParams in host.services.items():
|
|
||||||
#bool to check if the service is defined.
|
|
||||||
found = False
|
|
||||||
#to a real iteration. just pick the right service
|
|
||||||
for service in services:
|
|
||||||
if service.name != servicename:
|
|
||||||
continue
|
|
||||||
#indicate we found a service
|
|
||||||
found = True
|
|
||||||
#check to see if we already regexed our service command
|
|
||||||
if service.name not in serviceReplacements:
|
|
||||||
serviceReplacements[service.name] = pattern.findall(service.command)
|
|
||||||
for params in serviceParams:
|
|
||||||
#copy replacements from service command
|
|
||||||
replacements = serviceReplacements[service.name][:]
|
|
||||||
#for every Host.service.parameter we need a new HostService Object
|
|
||||||
hostService = HostService(service.clone())
|
|
||||||
#check if the ServiceParameter contain warnings or critical values
|
|
||||||
if 'warning' in params:
|
|
||||||
hostService.warning = params['warning']
|
|
||||||
del params['warning']
|
|
||||||
if 'critical' in params:
|
|
||||||
hostService.critical = params['critical']
|
|
||||||
del params['critical']
|
|
||||||
#any remainig parm should be a replacement
|
|
||||||
for parm in params:
|
|
||||||
if parm not in replacements:
|
|
||||||
log.w("undefined parameter: " + parm + " in host " + host.name + " from service " + service.name)
|
|
||||||
continue
|
|
||||||
#replace our ServiceCommand with the parameter_value (search, replacement, string)
|
|
||||||
hostService.setCommand(re.sub('@' + parm, params[parm], hostService.getCommand()))
|
|
||||||
replacements.remove(parm)
|
|
||||||
#host will not be inside ServiceParameters, so check this also
|
|
||||||
if 'host' in replacements:
|
|
||||||
log.d("replacing host in " + hostService.getCommand())
|
|
||||||
comm = re.sub('@host', host.host, hostService.getCommand())
|
|
||||||
hostService.setCommand(comm)
|
|
||||||
log.d("new Command: " +comm)
|
|
||||||
log.d("set in hostService: " + str(hostService))
|
|
||||||
replacements.remove('host')
|
|
||||||
#replacements should be empty now.
|
|
||||||
#If not we cannot use this command as some values are missing
|
|
||||||
if len(replacements) > 0:
|
|
||||||
log.w("Hostservice " + servicename + " from host " + host.name + " is ignored because of missing replacements: " + str(
|
|
||||||
replacements))
|
|
||||||
else:
|
|
||||||
#anything ok! add to our valid hostServices
|
|
||||||
hostServices.append(hostService)
|
|
||||||
#we could't find the service defined in this host. Service ignored!
|
|
||||||
if not found:
|
|
||||||
log.w("Service " + servicename + " not defined in host " + host.name)
|
|
||||||
#replace host.service member by parsed HostService Objects
|
|
||||||
host.services = hostServices
|
|
||||||
return parsedHosts
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
class Service:
|
|
||||||
def __init__(self, name="", command="", comment="", parser=""):
|
|
||||||
self.name = name
|
|
||||||
self.command = command
|
|
||||||
self.comment = comment
|
|
||||||
self.parser = parser
|
|
||||||
self.hostgroup = None
|
|
||||||
|
|
||||||
def set_hostgroup(self, hostgroup):
|
|
||||||
self.hostgroup = hostgroup
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return "Service('Name: " + self.name + "', 'Command: " + self.command + ", 'Parser: " + self.parser + "')"
|
|
||||||
|
|
||||||
def clone(self):
|
|
||||||
return Service(self.name, self.command, self.comment)
|
|
||||||
|
|
||||||
|
|
||||||
def serviceList(services):
|
|
||||||
return [Service(name=key, **values) for key, values in services.items()]
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
class Task:
|
|
||||||
def __init__(self, name="", command="", priority=0, comment=""):
|
|
||||||
self.name = name
|
|
||||||
self.command = command
|
|
||||||
self.priority = priority
|
|
||||||
self.comment = comment
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return "Task('Name: " + self.name + "', 'Command: " + self.command + "', 'Priority: " + str(self.priority) + "')"
|
|
||||||
|
|
||||||
def clone(self):
|
|
||||||
return Task(self.name, self.command, self.priority, self.comment)
|
|
||||||
|
|
||||||
|
|
||||||
def parseTaskList(tasks):
|
|
||||||
return [Task(name, **values) for name, values in tasks.items()]
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue