prepared a lot of stuff for new task handling... it was a hell to cleanup unused stuff!!!
This commit is contained in:
parent
a0fe68b251
commit
93bee9a8b2
13 changed files with 165 additions and 212 deletions
|
|
@ -134,9 +134,7 @@ def main():
|
|||
job = Job(service,
|
||||
host,
|
||||
hostgroup.get_members(),
|
||||
hostgroup.get_processors(),
|
||||
core,
|
||||
linConf.get_task_list(),
|
||||
hostgroup)
|
||||
scheduler_job = period.createJob(scheduler, job, handle_job, start_date=new_start_date)
|
||||
if scheduler_job is not None:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
"type": "error",
|
||||
"args": { "host": "localhost",
|
||||
"port": 25,
|
||||
"from": "linspector@linspector.org",
|
||||
"sender": "linspector@linspector.org",
|
||||
"username": "",
|
||||
"password": "",
|
||||
"rcpt": "hanez@linspector.org"
|
||||
|
|
@ -18,14 +18,15 @@
|
|||
"class": "mail",
|
||||
"type": "warning",
|
||||
"args": { "host": "localhost",
|
||||
"from": "linspector@linspector.org",
|
||||
"sender": "linspector@linspector.org",
|
||||
"rcpt": "warning@linspector.org"
|
||||
}
|
||||
},
|
||||
{
|
||||
"class": "mail",
|
||||
"type": "ok",
|
||||
"args": { "rcpt": "warning@linspector.org" }
|
||||
"args": { "sender": "linspector@linspector.org",
|
||||
"rcpt": "warning@linspector.org" }
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -55,6 +56,30 @@
|
|||
"periods": ["fast"],
|
||||
"threshold": 1,
|
||||
"args": { "sleep": 1, "fail": 1 }
|
||||
},
|
||||
{
|
||||
"class": "etc/dummy",
|
||||
"periods": ["fast"],
|
||||
"threshold": 1,
|
||||
"args": { "sleep": 10, "fail": 0 }
|
||||
}
|
||||
]
|
||||
},
|
||||
"b":{
|
||||
"members": ["root", "hannes"],
|
||||
"hosts": [ "b"],
|
||||
"services":[
|
||||
{
|
||||
"class": "etc/dummy",
|
||||
"periods": ["fast"],
|
||||
"threshold": 1,
|
||||
"args": { "sleep": 1, "fail": 1 }
|
||||
},
|
||||
{
|
||||
"class": "etc/dummy",
|
||||
"periods": ["fast"],
|
||||
"threshold": 1,
|
||||
"args": { "sleep": 10, "fail": 0 }
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -63,6 +88,10 @@
|
|||
"main":{
|
||||
"hostgroups": [ "a" ],
|
||||
"enabled": true
|
||||
},
|
||||
"gooo":{
|
||||
"hostgroups": [ "b" ],
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"core":{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
"""
|
||||
The LinspectorConfig class.
|
||||
|
||||
Copyright (c) 2011-2013 "Johannes Findeisen and Rafael Timmerberg"
|
||||
Copyright (c) 2011-2013 by Johannes Findeisen and Rafael Timmerberg
|
||||
|
||||
This file is part of Linspector (http://linspector.org).
|
||||
|
||||
|
|
@ -30,7 +30,6 @@ class LinspectorConfig(object):
|
|||
self._hostgroups = None
|
||||
self._members = None
|
||||
self._periods = None
|
||||
self._tasks = None
|
||||
|
||||
def set_hostgroups(self, hostgroups):
|
||||
self._hostgroups = hostgroups
|
||||
|
|
@ -76,9 +75,3 @@ class LinspectorConfig(object):
|
|||
|
||||
def get_period_by_name(self, name):
|
||||
return self._get_by_name(self.get_periods(), name)
|
||||
|
||||
def set_task_list(self, taskList):
|
||||
self.taskList = taskList
|
||||
|
||||
def get_task_list(self):
|
||||
return self.taskList
|
||||
|
|
@ -117,36 +117,3 @@ class HostGroup(object):
|
|||
|
||||
def get_members(self):
|
||||
return self.members
|
||||
|
||||
|
||||
class HostGroupService:
|
||||
def __init__(self, services, periods):
|
||||
self.services = services
|
||||
self.periods = periods
|
||||
|
||||
def __str__(self):
|
||||
return "HostgroupService { " + str([str(s) for s in self.services]) + ", " + str([p.name for p in self.periods]) + "}"
|
||||
|
||||
|
||||
def parseHostGroupList(hostgroups, hosts, members, periods, services):
|
||||
parsedHostGroups = []
|
||||
for hgname, hgValues in hostgroups.items():
|
||||
hostGroup = HostGroup(hgname)
|
||||
hostGroup.members = [m for m in members if m.nameid in hgValues['members']]
|
||||
hostGroup.hosts = [h for h in hosts if h.name in hgValues['hosts']]
|
||||
hostGroup.threshold = hgValues['threshold']
|
||||
if 'parent' in hgValues:
|
||||
hostGroup.parent = hgValues['parent']
|
||||
hostGroup.services = []
|
||||
for serviceName, servicePeriods in hgValues['services'].items():
|
||||
services = []
|
||||
for host in hosts:
|
||||
service = host.getHostServiceByName(serviceName)
|
||||
if service is not None:
|
||||
services.append(service)
|
||||
else:
|
||||
logger.warning("could not find HostService(" + str(serviceName) + ") for host " + host.name)
|
||||
hostGroupPeriods = [p for p in periods if p.name in servicePeriods]
|
||||
hostGroup.services.append(HostGroupService(services, hostGroupPeriods))
|
||||
parsedHostGroups.append(hostGroup)
|
||||
return parsedHostGroups
|
||||
|
|
@ -62,39 +62,3 @@ class Layout(object):
|
|||
for group in self.hostgroups:
|
||||
ret += str(group)
|
||||
return ret
|
||||
|
||||
|
||||
class LayoutList:
|
||||
def __init__(self, layouts, hostgroups):
|
||||
self.layouts = []
|
||||
self.dict = layouts
|
||||
self.plugins = []
|
||||
for k, v in layouts.items():
|
||||
if k in ("plugins", "Plugins"):
|
||||
self.plugins = v
|
||||
continue
|
||||
else:
|
||||
l = Layout(k)
|
||||
for k1, v1 in v.items():
|
||||
if k1 in ("enabled", "Enabled"):
|
||||
l.enabled = v1
|
||||
elif k1 in ("hostgroups", "Hostgroups"):
|
||||
l.hostgroups = []
|
||||
for group in v1:
|
||||
h = None
|
||||
for hostg in hostgroups:
|
||||
if hostg.name == group:
|
||||
h = hostg
|
||||
break
|
||||
if h is not None:
|
||||
l.hostgroups.append(h)
|
||||
else:
|
||||
pass
|
||||
self.layouts.append(l)
|
||||
|
||||
def __str__(self):
|
||||
ret = ""
|
||||
ret += "Plugins: " + str(self.plugins) + "\n"
|
||||
for layout in self.layouts:
|
||||
ret += str(layout) + "\n"
|
||||
return ret
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
"""
|
||||
Copyright (c) 2011-2013 "Johannes Findeisen and Rafael Timmerberg"
|
||||
Copyright (c) 2011-2013 by Johannes Findeisen and Rafael Timmerberg
|
||||
|
||||
This file is part of Linspector (http://linspector.org).
|
||||
|
||||
|
|
@ -24,58 +24,42 @@ from logging import getLogger
|
|||
logger = getLogger(__name__)
|
||||
|
||||
|
||||
class MemberException(Exception):
|
||||
def __init__(self, msg):
|
||||
self.msg = msg
|
||||
|
||||
def __str__(self):
|
||||
return repr(self.msg)
|
||||
|
||||
|
||||
class MemberMissingArgumentException(MemberException):
|
||||
def __init__(self, missingArgument, memberName):
|
||||
super(MemberMissingArgumentException, self).__init__("no " + missingArgument + " defined for member " + memberName)
|
||||
|
||||
|
||||
class Member:
|
||||
def __init__(self, id, name="", comment="", tasks=None):
|
||||
self.id = id
|
||||
def __init__(self, name="", **kwargs):
|
||||
self.name = name
|
||||
self.tasks = []
|
||||
self.add_task(tasks)
|
||||
self.comment = comment
|
||||
tmp = "tasks"
|
||||
self.__tasks = []
|
||||
if not tmp in kwargs:
|
||||
raise MemberMissingArgumentException(tmp, name)
|
||||
self.add_tasks(kwargs[tmp])
|
||||
|
||||
def get_id(self):
|
||||
return self.id
|
||||
|
||||
def add_task(self, task):
|
||||
if task is None:
|
||||
return
|
||||
if isinstance(task, list):
|
||||
self.tasks.extend(task)
|
||||
def __add_internal(self, l, item):
|
||||
if isinstance(item, list):
|
||||
l.extend(item)
|
||||
else:
|
||||
self.tasks.append(task)
|
||||
l.append(item)
|
||||
|
||||
def add_tasks(self, tasks):
|
||||
self.__add_internal(self.get_tasks(), tasks)
|
||||
|
||||
def get_tasks(self):
|
||||
return self.tasks
|
||||
return self.__tasks
|
||||
|
||||
def __str__(self):
|
||||
ret = "Member Id: " + self.nameid + " Name: " + self.name + " Filters: " + str(self.phone)
|
||||
for f in self.filters:
|
||||
ret += str(f)
|
||||
return ret
|
||||
|
||||
|
||||
class MemberFilter:
|
||||
def __init__(self, filter, Value):
|
||||
self.filter = filter
|
||||
self.value = Value
|
||||
|
||||
def __str__(self):
|
||||
return "Filter:" + str(self.filter) + " Value:" + self.value
|
||||
|
||||
|
||||
def parseMemberList(members, filters):
|
||||
parsedMembers = [Member(nameid, **values) for nameid, values in members.items()]
|
||||
for member in parsedMembers:
|
||||
mFilter = []
|
||||
for filtername, replacement in member.filters.items():
|
||||
found = False
|
||||
for filt in filters:
|
||||
if filt.name != filtername:
|
||||
continue
|
||||
found = True
|
||||
memberFilter = filt.clone()
|
||||
memberFilter.command = re.sub('@member', replacement, filt.command)
|
||||
mFilter.append(memberFilter)
|
||||
if not found:
|
||||
logger.warning("filter: " + filtername + " is not defined in member " + member.name)
|
||||
member.filters = mFilter
|
||||
return parsedMembers
|
||||
|
|
@ -30,7 +30,7 @@ from config import LinspectorConfig
|
|||
from periods import CronPeriod, DatePeriod, IntervalPeriod
|
||||
|
||||
from linspector.services.service import Service
|
||||
from linspector.tasks.task import TaskList
|
||||
from linspector.tasks.task import Task
|
||||
|
||||
MOD_SERVICES = "services"
|
||||
MOD_TASKS = "tasks"
|
||||
|
|
@ -40,7 +40,6 @@ KEY_HOSTGROUPS = "hostgroups"
|
|||
KEY_MEMBERS = "members"
|
||||
KEY_PERIODS = "periods"
|
||||
KEY_CORE = "core"
|
||||
KEY_TASKS = "tasks"
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
||||
|
|
@ -66,7 +65,7 @@ class ConfigParser:
|
|||
self._loadedMods = {MOD_SERVICES: {}, MOD_TASKS: {}}
|
||||
|
||||
def _create_new_config_dict(self):
|
||||
return {"members": {}, "periods": {}, "hostgroups": {}, "layouts": {}, "core": {}, "tasks": {}}
|
||||
return {"members": {}, "periods": {}, "hostgroups": {}, "layouts": {}, "core": {}}
|
||||
|
||||
def create_config(self, config):
|
||||
configDict = self._create_new_config_dict()
|
||||
|
|
@ -231,59 +230,52 @@ class FullConfigParser(ConfigParser):
|
|||
|
||||
#1.
|
||||
creator = lambda name, values: Layout(name, **values)
|
||||
layouts = self._create_raw_Object(self.dict[KEY_LAYOUTS], "Layout", creator)
|
||||
self.layouts = self._create_raw_Object(self.dict[KEY_LAYOUTS], "Layout", creator)
|
||||
|
||||
#TODO: self.members is empty after this!!!!!! BUG!!!
|
||||
creator = lambda name, values: Member(name, **values)
|
||||
members = self._create_raw_Object(self.dict[KEY_MEMBERS], "Member", creator)
|
||||
self.members = self._create_raw_Object(self.dict[KEY_MEMBERS], "Member", creator)
|
||||
|
||||
creator = lambda name, values: HostGroup(name, **values)
|
||||
self.hostgroups = self._create_raw_Object(self.dict[KEY_HOSTGROUPS], "Hostgroup", creator)
|
||||
|
||||
creator = parsePeriodList
|
||||
periods = self._create_raw_Object(self.dict[KEY_PERIODS], "Period", creator)
|
||||
|
||||
#1.1 get Tasks
|
||||
creator = lambda name, values: self._load_module(name, MOD_TASKS).create(values).set_task_type(name)
|
||||
tasks = self._create_raw_Object(self.dict[KEY_TASKS], "Task", creator)
|
||||
taskList = TaskList(tasks)
|
||||
|
||||
self.periods = self._create_raw_Object(self.dict[KEY_PERIODS], "Period", creator)
|
||||
|
||||
#2. import and replace
|
||||
items_func = lambda hostgroup: hostgroup.get_services()
|
||||
class_check = lambda service: isinstance(service, Service)
|
||||
self.replace_with_import(self.hostgroups, MOD_SERVICES, items_func, class_check)
|
||||
|
||||
#items_func = lambda member: member.get_tasks()
|
||||
#class_check = lambda task: isinstance(task, Task)
|
||||
#self.replace_with_import(members, MOD_TASKS, items_func, class_check)
|
||||
|
||||
services = []
|
||||
for hg in self.hostgroups:
|
||||
services.extend(hg.get_services())
|
||||
|
||||
items_func = lambda member: member.get_tasks()
|
||||
class_check = lambda task: isinstance(task, Task)
|
||||
self.replace_with_import(self.members, MOD_TASKS, items_func, class_check)
|
||||
tasks = []
|
||||
for m in self.members:
|
||||
tasks.extend(m.get_tasks())
|
||||
|
||||
#replace object pointer
|
||||
id_list_func = lambda hostgroup: hostgroup.get_members()
|
||||
id_get_func = lambda member: member.get_id()
|
||||
self.replace_pointer(self.hostgroups, members, id_list_func, id_get_func)
|
||||
id_get_func = lambda member: member.get_name()
|
||||
self.replace_pointer(self.hostgroups, self.members, id_list_func, id_get_func)
|
||||
|
||||
id_list_func = lambda service: service.get_periods()
|
||||
id_get_func = lambda period: period.get_name()
|
||||
self.replace_pointer(services, periods, id_list_func, id_get_func)
|
||||
self.replace_pointer(services, self.periods, id_list_func, id_get_func)
|
||||
|
||||
id_list_func = lambda layout: layout.get_hostgroups()
|
||||
id_get_func = lambda hostgroup: hostgroup.get_name()
|
||||
self.replace_pointer(layouts, self.hostgroups, id_list_func, id_get_func)
|
||||
self.replace_pointer(self.layouts, self.hostgroups, id_list_func, id_get_func)
|
||||
|
||||
linConf = LinspectorConfig()
|
||||
linConf.set_layouts(layouts)
|
||||
linConf.set_layouts(self.layouts)
|
||||
linConf.set_hostgroups(self.hostgroups)
|
||||
linConf.set_members(members)
|
||||
linConf.set_periods(periods)
|
||||
linConf.set_task_list(taskList)
|
||||
linConf.set_members(self.members)
|
||||
linConf.set_periods(self.periods)
|
||||
|
||||
for hg in self.hostgroups:
|
||||
for service in hg.get_services():
|
||||
service.set_hostgroup(hg)
|
||||
core = None
|
||||
if "core" in self.dict:
|
||||
core = self.dict["core"]
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@ class Period(object):
|
|||
def get_name(self):
|
||||
return self.name
|
||||
|
||||
def createJob(self, scheduler, jobInfo, func):
|
||||
pass
|
||||
#def createJob(self, scheduler, jobInfo, func):
|
||||
# pass
|
||||
|
||||
|
||||
class IntervalPeriod(Period):
|
||||
|
|
|
|||
|
|
@ -28,13 +28,11 @@ logger = getLogger(__name__)
|
|||
|
||||
|
||||
class Job:
|
||||
def __init__(self, service, host, members, processors, core, task_list, hostgroup):
|
||||
def __init__(self, service, host, members, core, hostgroup):
|
||||
self.service = service
|
||||
self.host = host
|
||||
self.members = members
|
||||
self.processors = processors
|
||||
self.core = core
|
||||
self.task_list = task_list
|
||||
self.hostgroup = hostgroup
|
||||
self.job_infos = []
|
||||
self.job_index = -1
|
||||
|
|
@ -113,7 +111,10 @@ class Job:
|
|||
|
||||
def handle_alarm(self):
|
||||
for member in self.members:
|
||||
self.task_list.execute_task_infos(self.status + " " + self.get_message(), member.get_tasks())
|
||||
for task in member.get_tasks():
|
||||
task.execute(str(self.get_message()))
|
||||
#print task
|
||||
logger.info("DO TASK EXECUTION HERE! NOT IMPLEMENTED!")
|
||||
|
||||
def handle_call(self):
|
||||
logger.debug("handle call")
|
||||
|
|
|
|||
|
|
@ -63,8 +63,8 @@ class DummyService(Service):
|
|||
if "fail" in args:
|
||||
self.fail = args["fail"]
|
||||
|
||||
def needs_arguments(self):
|
||||
return False
|
||||
#def needs_arguments(self):
|
||||
# return False
|
||||
|
||||
def execute(self, job):
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
from logging import getLogger
|
||||
|
||||
KEY_PARSER = "parser"
|
||||
KEY_COMMENT = "comment"
|
||||
KEY_THRESHOLD = "threshold"
|
||||
KEY_FAILS = "fails"
|
||||
|
|
@ -38,10 +37,6 @@ class Service(object):
|
|||
elif self.needs_arguments():
|
||||
raise Exception("Error: needs arguments but none provided!")
|
||||
|
||||
self._parser = []
|
||||
if KEY_PARSER in kwargs:
|
||||
self.add_parser(kwargs[KEY_PARSER])
|
||||
|
||||
self._comment = None
|
||||
if KEY_COMMENT in kwargs:
|
||||
self._comment = kwargs[KEY_COMMENT]
|
||||
|
|
@ -61,8 +56,9 @@ class Service(object):
|
|||
def __str__(self):
|
||||
return self.get_name() + " " + repr(self._args)
|
||||
|
||||
def get_type(self):
|
||||
return str(self.__class__)
|
||||
#TODO: not used somewhere
|
||||
#def get_service_type(self):
|
||||
# return str(self.__class__)
|
||||
|
||||
def get_name(self):
|
||||
return self.__class__.__name__
|
||||
|
|
@ -71,8 +67,9 @@ class Service(object):
|
|||
for key, val in args.items():
|
||||
self._args[key] = val
|
||||
|
||||
def add_argument(self, key, value):
|
||||
self._args[key] = value
|
||||
#TODO: not used somewhere
|
||||
#def add_argument(self, key, value):
|
||||
# self._args[key] = value
|
||||
|
||||
def get_arguments(self):
|
||||
return self._args
|
||||
|
|
@ -136,9 +133,6 @@ class Service(object):
|
|||
self._threshold -= 1
|
||||
raise e
|
||||
|
||||
##def execute(self):
|
||||
# pass
|
||||
|
||||
def pre_execute(self, job):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -35,40 +35,44 @@ logger = getLogger(__name__)
|
|||
|
||||
class MailTask(Task):
|
||||
def __init__(self, **kwargs):
|
||||
mandatory_args = ["host", "password", "from", "username"]
|
||||
for arg in mandatory_args:
|
||||
if not arg in kwargs:
|
||||
self.raise_config_exception(kwargs, arg)
|
||||
self.host = kwargs["host"]
|
||||
self.password = kwargs["password"]
|
||||
self.fromName = kwargs["from"]
|
||||
self.userName = kwargs["username"]
|
||||
super(MailTask, self).__init__(**kwargs)
|
||||
|
||||
args = self.get_arguments()
|
||||
|
||||
if "sender" in args:
|
||||
self.sender = args["sender"]
|
||||
else:
|
||||
raise Exception("There is no sender set")
|
||||
|
||||
if "rcpt" in args:
|
||||
self.rcpt = args["rcpt"]
|
||||
else:
|
||||
raise Exception("There is no rcpt set")
|
||||
|
||||
self.host = "localhost"
|
||||
if "host" in args:
|
||||
self.host = args["host"]
|
||||
|
||||
self.port = 25
|
||||
if "port" in kwargs:
|
||||
self.port = kwargs["port"]
|
||||
if "port" in args:
|
||||
self.port = args["port"]
|
||||
|
||||
#self.set_task_type(kwargs["type"])
|
||||
#self.recipient = kwargs["args"]["rcpt"]
|
||||
|
||||
def execute(self, msg, taskArgs):
|
||||
#time.sleep(3)
|
||||
if "rcpt" not in taskArgs:
|
||||
logger.debug("Could not execute Mail Task! No recipient given!")
|
||||
raise "Could not execute Mail Task! No recipient given!"
|
||||
# ...and so on for all possible args
|
||||
|
||||
def execute(self, msg):
|
||||
logger.debug("Eecuting Task!")
|
||||
|
||||
message = MIMEText(msg)
|
||||
message['Subject'] = msg
|
||||
now = datetime.datetime.now()
|
||||
message['Date'] = now.strftime("%a, %d %b %Y %H:%M:%S")
|
||||
message['From'] = self.fromName
|
||||
message['To'] = taskArgs["rcpt"]
|
||||
message['From'] = self.sender
|
||||
message['To'] = self.rcpt["rcpt"]
|
||||
s = smtplib.SMTP(self.host, self.port)
|
||||
#s.login(self.userName, self.password)
|
||||
s.sendmail(self.fromName, taskArgs["rcpt"], message.as_string())
|
||||
s.sendmail(self.sender, self.rcpt["rcpt"], message.as_string())
|
||||
s.quit()
|
||||
|
||||
|
||||
def create(taskDict):
|
||||
return MailTask(**taskDict)
|
||||
def create(kwargs):
|
||||
return MailTask(**kwargs)
|
||||
|
|
@ -22,25 +22,51 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
from logging import getLogger
|
||||
from threading import Event, Thread
|
||||
|
||||
KEY_TYPE = "type"
|
||||
KEY_ARGS = "args"
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
||||
|
||||
class Task:
|
||||
def raise_config_exception(self, typeDict, name):
|
||||
raise Exception("typeDict " + str(typeDict) + " has no " + str(name) + " argument!")
|
||||
def __init__(self, **kwargs):
|
||||
|
||||
def set_task_type(self, taskType):
|
||||
self._taskType = taskType
|
||||
return self
|
||||
self._args = {}
|
||||
|
||||
if KEY_ARGS in kwargs:
|
||||
self.add_arguments(kwargs[KEY_ARGS])
|
||||
elif self.needs_arguments():
|
||||
raise Exception("Error: needs arguments but none provided!")
|
||||
|
||||
self._type = None
|
||||
if KEY_TYPE in kwargs:
|
||||
self._type = kwargs[KEY_TYPE]
|
||||
|
||||
def get_task_type(self):
|
||||
return self._taskType
|
||||
return str(self.__class__)
|
||||
|
||||
def execute(self, msg, args):
|
||||
pass
|
||||
def add_arguments(self, args):
|
||||
for key, val in args.items():
|
||||
self._args[key] = val
|
||||
|
||||
def get_arguments(self):
|
||||
return self._args
|
||||
|
||||
def set_member(self, member):
|
||||
self.member = member
|
||||
|
||||
def needs_arguments(self):
|
||||
return False
|
||||
|
||||
def execute(self, job):
|
||||
try:
|
||||
self.execute(job)
|
||||
except Exception, e:
|
||||
logger.debug("Task execute failed!!!")
|
||||
raise e
|
||||
|
||||
|
||||
"""
|
||||
class TaskList(object):
|
||||
def __init__(self, tasks):
|
||||
self.tasks = tasks
|
||||
|
|
@ -75,3 +101,4 @@ class TaskList(object):
|
|||
def execute_task_infos(self, msg, taskInfos):
|
||||
self.taskInfos.append((msg, taskInfos))
|
||||
self.event.set()
|
||||
"""
|
||||
Loading…
Add table
Add a link
Reference in a new issue